欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python如何去除圖片干擾代碼示例

 更新時間:2025年06月17日 11:47:43   作者:detayun  
圖片降噪是一個廣泛應(yīng)用于圖像處理的技術(shù),可以提高圖像質(zhì)量和相關(guān)應(yīng)用的效果,這篇文章主要介紹了Python如何去除圖片干擾的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

在Python中去除圖片干擾,需根據(jù)干擾類型(如噪聲、特定物體、強光等)選擇合適的方法。以下是分場景解決方案及代碼示例:

一、噪聲去除

1. 高斯噪聲(像素值正態(tài)分布擾動)

  • 方法:高斯濾波、雙邊濾波、小波變換
  • 代碼示例(OpenCV)
    import cv2
    import numpy as np
    
    # 讀取圖像并添加高斯噪聲
    image = cv2.imread('noisy_image.jpg')
    noise = np.random.normal(0, 25, image.shape).astype(np.uint8)
    noisy_image = cv2.add(image, noise)
    
    # 高斯濾波去噪
    gaussian_filtered = cv2.GaussianBlur(noisy_image, (5, 5), 0)
    
    # 雙邊濾波(保留邊緣)
    bilateral_filtered = cv2.bilateralFilter(noisy_image, d=9, sigmaColor=75, sigmaSpace=75)
    
    cv2.imshow('Original', image)
    cv2.imshow('Gaussian Filtered', gaussian_filtered)
    cv2.imshow('Bilateral Filtered', bilateral_filtered)
    cv2.waitKey(0)
    

2. 椒鹽噪聲(隨機黑白像素點)

  • 方法:中值濾波
  • 代碼示例(OpenCV)
    # 添加椒鹽噪聲(示例)
    x = image.reshape(-1)
    SNR = 0.85
    noise_num = int(x.size * (1 - SNR))
    random_indices = np.random.choice(x.size, noise_num, replace=False)
    x[random_indices] = np.random.choice([0, 255], noise_num)
    noisy_image = x.reshape(image.shape)
    
    # 中值濾波去噪
    median_filtered = cv2.medianBlur(noisy_image, 5)
    

3. 復雜噪聲(如偽影)

  • 方法:非局部均值去噪(NLM)
  • 代碼示例(Scikit-image)
    from skimage import io, img_as_float
    from skimage.restoration import denoise_nl_means
    
    image = img_as_float(io.imread('noisy_image.jpg'))
    denoised = denoise_nl_means(image, h=0.1, fast_mode=True, patch_size=5, patch_distance=3)
    

二、特定干擾去除

1. 干擾線(如掃描文檔中的橫線)

  • 方法:二值化 + 鄰域分析
  • 代碼示例(Pillow)
    from PIL import Image, ImageFilter
    
    def remove_lines(image_path, threshold=128):
        image = Image.open(image_path).convert('L')  # 轉(zhuǎn)為灰度
        binarized = image.point(lambda x: 0 if x < threshold else 255, '1')
        clean = binarized.copy()
        width, height = binarized.size
    
        for y in range(1, height-1):
            for x in range(1, width-1):
                if binarized.getpixel((x, y)) == 0:
                    neighbors = [binarized.getpixel((x-1, y)), binarized.getpixel((x+1, y)),
                                 binarized.getpixel((x, y-1)), binarized.getpixel((x, y+1))]
                    if neighbors.count(0) >= 2:
                        clean.putpixel((x, y), 255)
        return clean
    
    cleaned_image = remove_lines('document.jpg')
    cleaned_image.save('cleaned_document.jpg')
    

2. 強光干擾(過曝區(qū)域)

  • 方法:顏色空間轉(zhuǎn)換 + 閾值調(diào)整
  • 代碼示例(OpenCV)
    import cv2
    import numpy as np
    
    image = cv2.imread('overexposed.jpg')
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    lower = np.array([0, 0, 200])  # V通道閾值
    upper = np.array([180, 255, 255])
    mask = cv2.inRange(hsv, lower, upper)
    
    # 降低過曝區(qū)域亮度
    image[mask != 0] = cv2.add(image[mask != 0], (0, 0, -80))
    cv2.imwrite('corrected.jpg', image)
    

三、深度學習進階方案

對于復雜場景(如混合噪聲、紋理干擾),可使用預訓練模型(如U-Net、DnCNN):

import torch
from torchvision import models

# 加載預訓練去噪模型(示例)
model = models.DnCNN().eval()
model.load_state_dict(torch.load('dncnn_pretrained.pth'))

# 預處理輸入
input_tensor = preprocess(noisy_image)  # 需自定義預處理函數(shù)
with torch.no_grad():
    output = model(input_tensor)
denoised_image = postprocess(output)  # 自定義后處理函數(shù)

四、方法選擇建議

  • 快速去噪:優(yōu)先使用OpenCV/Pillow的內(nèi)置濾波器(如cv2.medianBlur)。
  • 保留細節(jié):選擇雙邊濾波或小波變換。
  • 復雜噪聲:嘗試Scikit-image的非局部均值或深度學習模型。
  • 特定干擾:結(jié)合二值化、形態(tài)學操作或自定義像素分析邏輯。

通過調(diào)整濾波器參數(shù)(如核大小、閾值)或模型超參數(shù),可進一步優(yōu)化去噪效果。

到此這篇關(guān)于Python如何去除圖片干擾的文章就介紹到這了,更多相關(guān)Python去除圖片干擾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python數(shù)據(jù)爬下來保存的位置

    python數(shù)據(jù)爬下來保存的位置

    在本篇文章里小編給大家整理的是關(guān)于python數(shù)據(jù)爬下來保存的位置,需要的朋友們可以參考下。
    2020-02-02
  • Python列表轉(zhuǎn)一維DataFrame的完整指南

    Python列表轉(zhuǎn)一維DataFrame的完整指南

    在數(shù)據(jù)處理領(lǐng)域,Pandas的DataFrame是當之無愧的王者,本文將用5個核心方法,教你優(yōu)雅地將一維列表轉(zhuǎn)換為Pandas DataFrame,感興趣的可以了解下
    2025-04-04
  • PyCharm遠程調(diào)試代碼配置以及運行參數(shù)設(shè)置方式

    PyCharm遠程調(diào)試代碼配置以及運行參數(shù)設(shè)置方式

    這篇文章主要介紹了PyCharm遠程調(diào)試代碼配置以及運行參數(shù)設(shè)置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • python爬蟲框架talonspider簡單介紹

    python爬蟲框架talonspider簡單介紹

    本文給大家介紹的是使用python開發(fā)的爬蟲框架talonspider的簡單介紹以及使用方法,有需要的小伙伴可以參考下
    2017-06-06
  • 使用python實現(xiàn)CGI環(huán)境搭建過程解析

    使用python實現(xiàn)CGI環(huán)境搭建過程解析

    這篇文章主要介紹了使用python實現(xiàn)CGI環(huán)境搭建過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 一文解密Python中的垃圾回收

    一文解密Python中的垃圾回收

    我們知道,python?是一種高級編程語言,它提供了自動內(nèi)存管理的功能,即垃圾回收機制,所以本文就來聊聊python的垃圾回收機制是如何實現(xiàn)的以及具體是使用,感興趣的可以了解下
    2023-09-09
  • Python numpy和matlab的幾點差異介紹

    Python numpy和matlab的幾點差異介紹

    這篇文章主要介紹了Python numpy和matlab的幾點差異,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python?Pandas條件篩選功能

    Python?Pandas條件篩選功能

    這篇文章主要介紹了Python?Pandas條件篩選功能,篩選是在平時的工作中使用非常頻繁的功能了,下文詳細的相關(guān)資料介紹,需要的小伙伴可以參考一下
    2022-03-03
  • python 對一幅灰度圖像進行直方圖均衡化

    python 對一幅灰度圖像進行直方圖均衡化

    這篇文章主要介紹了python 如何對一幅灰度圖像進行直方圖均衡化,幫助大家更好的利用python處理圖像,感興趣的朋友可以了解下
    2020-10-10
  • Python中計時程序運行時間的幾種常用方法

    Python中計時程序運行時間的幾種常用方法

    這篇文章主要介紹了Python中計時程序運行時間的幾種常用方法,分別是一般方法、基于上下文管理器和基于裝飾器,每種方法都有其適用場景和優(yōu)缺點,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-04-04

最新評論