国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

這篇具有很好參考價(jià)值的文章主要介紹了(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

圖像平滑(Image Smoothing):是一種數(shù)字圖像處理技術(shù),用于減少圖像中的噪聲不規(guī)則性,使圖像更加平滑和連續(xù)。在圖像中,噪聲通常表現(xiàn)為不規(guī)則的、突出的像素值,這可能會(huì)導(dǎo)致圖像細(xì)節(jié)丟失,使其難以進(jìn)行分析和處理。圖像平滑技術(shù)可以通過對(duì)像素值進(jìn)行濾波來平滑圖像,去除這些噪聲

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

圖像平滑主要分為如下兩類

  • 空域法 主要借助模板運(yùn)算,在像素點(diǎn)鄰域內(nèi),利用噪聲像素點(diǎn)特性進(jìn)行濾波
  • 頻域法 指對(duì)圖像進(jìn)行正交變換,利用噪聲對(duì)應(yīng)高頻信息的特點(diǎn)進(jìn)行濾波

一:圖像中的噪聲

圖像中的噪聲:是指在圖像中出現(xiàn)的不希望出現(xiàn)的、隨機(jī)的像素值變化,這些變化可能是由于圖像采集設(shè)備、傳輸通道或者圖像處理過程中引入的。噪聲會(huì)使圖像中出現(xiàn)不規(guī)則的亮度、色彩等異常情況,從而導(dǎo)致圖像質(zhì)量下降,給后續(xù)的分析和處理帶來困難。也可以理解為真實(shí)信號(hào)與理想信號(hào)之間存在的偏差。噪聲通常以二維函數(shù) n ( x , y ) n(x,y) n(x,y)來表示

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

(1)圖像噪聲分類

圖像噪聲分類

  • 高斯噪聲 高斯噪聲是最常見的一種圖像噪聲,其像素值變化符合正態(tài)分布。在圖像中,高斯噪聲通常表現(xiàn)為細(xì)小的均勻噪聲
  • 椒鹽噪聲 椒鹽噪聲是一種隨機(jī)的噪聲,其表現(xiàn)為圖像中出現(xiàn)黑白像素點(diǎn),通常是由于圖像傳輸或采集設(shè)備的問題引起的
  • 周期噪聲 周期噪聲是指在圖像中出現(xiàn)周期性的波紋、條紋等形式的噪聲,這通常是由于攝像機(jī)、掃描儀等采集設(shè)備的問題引起的
  • 色彩噪聲 色彩噪聲是指在圖像中出現(xiàn)的顏色偏差,這通常是由于相機(jī)傳感器的顏色誤差、照明條件不足等原因引起的

另外,圖像噪聲可以根據(jù)信號(hào)和噪聲的關(guān)系分為

  • 加性噪聲 加性噪聲與圖像信號(hào)不相關(guān),也即 g ( x , y ) = f ( x , y ) + n ( x , y ) g(x,y)=f(x,y)+n(x,y) g(x,y)=f(x,y)+n(x,y)
  • 乘性噪聲 乘性噪聲與圖像信號(hào)相關(guān),也即 g ( x , y ) = f ( x , y ) + f ( x , y ) n ( x , y ) g(x,y)=f(x,y)+f(x,y)n(x,y) g(x,y)=f(x,y)+f(x,y)n(x,y)

在信號(hào)變化很小時(shí),往往將乘性噪聲近似認(rèn)為加性噪聲,而且總是假定信號(hào)和噪聲互相獨(dú)立

(2)圖像噪聲的數(shù)學(xué)模型

高斯噪聲:定義為高斯噪聲信號(hào) x x x的概率密度函數(shù)

  • μ \mu μ:噪聲 x x x的均值或期望值
  • σ \sigma σ:噪聲 x x x的標(biāo)準(zhǔn)差

p ( x ) = 1 2 π σ e ? ( x ? μ ) 2 / 2 σ 2 p(x)=\frac{1}{\sqrt{2 \pi} \sigma} e^{-(x-\mu)^{2} / 2 \sigma^{2}} p(x)=2π ?σ1?e?(x?μ)2/2σ2
當(dāng) x x x服從高斯分布時(shí),其值有70%落在 [ ( μ ? σ ) , ( μ + σ ) ] [(\mu-\sigma),(\mu+\sigma)] [(μ?σ),(μ+σ)]范圍內(nèi),且有95%落在 [ ( μ ? 2 σ ) , ( μ + 2 σ ) ] [(\mu-2\sigma),(\mu+2\sigma)] [(μ?2σ),(μ+2σ)]

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

椒鹽噪聲:定義椒鹽噪聲信號(hào) x x x有效模型

p ( x ) = { P a x = a P b x = b 0 ?otherwise? p(x)=\left\{\begin{array}{cc}P_{a} & x=a \\P_ & x=b \\0 & \text { otherwise }\end{array}\right. p(x)=? ? ??Pa?Pb?0?x=ax=b?otherwise??

如下圖

  • 當(dāng) P a = 0 , P b =? 0 P_{a}=0,P_ \not=0 Pa?=0,Pb?=0時(shí),表現(xiàn)為“鹽”噪聲
  • 當(dāng) P a =? 0 , P b = 0 P_{a}\not=0,P_ =0 Pa?=0,Pb?=0時(shí),表現(xiàn)為“胡椒”噪聲

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

可以看出,高斯噪聲和椒鹽噪聲不同分布特性

  • 椒鹽噪聲:噪聲幅值基本相同,出現(xiàn)位置隨機(jī)
  • 高斯噪聲:噪聲出現(xiàn)位置是分布在每一像素 點(diǎn)上,幅度值是隨機(jī)的,分布近似符合高斯 正態(tài)特性

(3)程序

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

imnoise函數(shù):用于在圖像中添加噪聲的函數(shù),可以模擬在圖像采集、傳輸、處理等過程中引入的不同類型的噪聲。imnoise函數(shù)的常見語(yǔ)法格式如下

J = imnoise(I, type)
J = imnoise(I, type, parameters)

其中,I是輸入圖像,type是噪聲類型,可以是字符串形式的字符向量或枚舉型變量,parameters是可選的參數(shù),用于控制噪聲的強(qiáng)度、分布等。imnoise函數(shù)支持以下類型的噪聲

  • gaussian:高斯噪聲,可選參數(shù)包括mean(均值)和var(方差)
  • salt & pepper:椒鹽噪聲,可選參數(shù)包括density(密度)
  • poisson:泊松噪聲,無可選參數(shù)
  • speckle:乘性噪聲,可選參數(shù)包括mean(均值)和var(方差)
  • localvar:局部方差噪聲,可選參數(shù)包括二維數(shù)組w(窗口大?。┖投S數(shù)組var(局部方差)
  • lognormal:對(duì)數(shù)正態(tài)分布噪聲,可選參數(shù)包括mean(均值)和var(方差)
  • rayleigh:瑞利分布噪聲,可選參數(shù)為scale(尺度)
  • erlang:伽馬分布噪聲,可選參數(shù)包括shape(形狀)和scale(尺度)
  • uniform:均勻分布噪聲,可選參數(shù)包括lower(下限)和upper(上限)

matlab實(shí)現(xiàn)

Image = mat2gray( imread('original_pattern.jpg') ,[0 255]);
noiseIsp=imnoise(Image,'salt & pepper',0.1);  %添加椒鹽噪聲,密度為0.1  
imshow(noiseIsp,[0 1]); title('椒鹽噪聲圖像');
noiseIg=imnoise(Image,'gaussian'); %添加高斯噪聲,默認(rèn)均值為0,方差為0.01
figure;imshow(noiseIg,[0 1]); title('高斯噪聲圖像');  

Python實(shí)現(xiàn)

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 讀取圖像
img = cv2.imread('original_pattern.jpg', cv2.IMREAD_GRAYSCALE)

# 將圖像歸一化到 [0,1] 范圍內(nèi)
img = cv2.normalize(img.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)

# 添加椒鹽噪聲,密度為 0.1
noiseIsp = img.copy()
noiseIsp = np.random.choice([0, 1], size=noiseIsp.shape, p=[0.9, 0.1]).astype('float') * 255
noiseIsp = cv2.merge([noiseIsp, noiseIsp, noiseIsp])
noiseIsp = cv2.cvtColor(noiseIsp, cv2.COLOR_BGR2GRAY)
noiseIsp = cv2.normalize(noiseIsp.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)

# 顯示椒鹽噪聲圖像
plt.imshow(noiseIsp, cmap='gray', vmin=0, vmax=1)
plt.title('椒鹽噪聲圖像')
plt.show()

# 添加高斯噪聲,默認(rèn)均值為 0,方差為 0.01
noiseIg = cv2.randn(img.shape, 0, 0.01)
noiseIg = cv2.add(img, noiseIg)

# 將圖像歸一化到 [0,1] 范圍內(nèi)
noiseIg = cv2.normalize(noiseIg.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)

# 顯示高斯噪聲圖像
plt.imshow(noiseIg, cmap='gray', vmin=0, vmax=1)
plt.title('高斯噪聲圖像')
plt.show()

二:空間域平滑濾波

空間域平滑濾波:是數(shù)字圖像處理中常用的一種濾波方法,也被稱為模糊濾波。它通過對(duì)圖像像素周圍一定大小的鄰域內(nèi)像素灰度值進(jìn)行加權(quán)平均,以消除圖像中的高頻噪聲和細(xì)節(jié)信息,從而使圖像變得更加平滑。常見有以下幾種

  • 均值濾波
  • 高斯濾波
  • 中值濾波
  • 雙邊濾波

(1)均值濾波

A:均值濾波原理

均值濾波:是以某一像素為中心,在它的周圍選擇一鄰域,將鄰域內(nèi)所有點(diǎn)的均值(灰度值相加求平均)來代替原來像素值

  • S S S:以點(diǎn) ( x , y ) (x,y) (x,y)為中心的鄰域
  • M M M:領(lǐng)域 S S S內(nèi)總像素?cái)?shù)目

g ( x , y ) = 1 M ∑ ( m , n ) ∈ S f ( m , n ) g(x, y)=\frac{1}{M} \sum_{(m, n) \in S} f(m, n) g(x,y)=M1?(m,n)S?f(m,n)

如下為常用的線性平滑簡(jiǎn)單均值模板

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

B:示例

如下圖

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

C:分析

均值濾波的優(yōu)點(diǎn)是簡(jiǎn)單易實(shí)現(xiàn),對(duì)于一些噪聲較小的圖像能夠取得不錯(cuò)的平滑效果。但是,它也存在一些缺點(diǎn)。例如,它會(huì)對(duì)圖像中的邊緣和細(xì)節(jié)信息造成模糊,同時(shí)也可能使得一些噪聲點(diǎn)變得更加明顯。此外,均值濾波對(duì)于椒鹽噪聲等高斯分布以外的噪聲類型效果較差

  • 若鄰域內(nèi)存在噪聲,經(jīng)過平均,噪聲幅度會(huì)大為降低
  • 點(diǎn)與點(diǎn)之間的灰度差值變小,邊緣和細(xì)節(jié)處變得模糊
  • 鄰域半徑越大,圖像模糊程度越厲害

D:程序

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

fspecial函數(shù):用于生成一些常見的濾波器卷積核的函數(shù)。這些卷積核可以用于各種圖像處理任務(wù),例如平滑、銳化、邊緣檢測(cè)等。fspecial 函數(shù)返回一個(gè)二維的卷積核矩陣 H,該矩陣的大小和形狀由參數(shù) type 和可選參數(shù)決定??梢詫⒃摼矸e核作為參數(shù)傳遞給 MATLAB 中的卷積函數(shù),如 conv2 函數(shù),對(duì)圖像進(jìn)行濾波操作。該函數(shù)語(yǔ)法如下

H = fspecial(type, varargin)

其中,參數(shù) type 指定了要生成的卷積核的類型。type 可以取以下字符串值:

  • 'average':平均濾波器;
  • 'disk':圓形平滑濾波器;
  • 'gaussian':高斯濾波器;
  • 'laplacian':拉普拉斯濾波器;
  • 'log':高斯-拉普拉斯(LoG)濾波器;
  • 'motion':運(yùn)動(dòng)模糊濾波器;
  • 'prewitt':Prewitt 濾波器;
  • 'sobel':Sobel 濾波器

filter函數(shù):是一個(gè)二維濾波器函數(shù),用于對(duì)圖像進(jìn)行濾波操作。它可以使用用戶自定義的濾波器卷積核進(jìn)行濾波,也可以使用 fspecial 函數(shù)生成的預(yù)定義濾波器卷積核進(jìn)行濾波。函數(shù)返回一個(gè)濾波后的二維數(shù)組 B,其大小和形狀由參數(shù) shape 決定??梢詫?filter2 函數(shù)用于圖像處理任務(wù),例如平滑、銳化、邊緣檢測(cè)等。需要注意的是,filter2 函數(shù)的濾波操作是基于卷積運(yùn)算實(shí)現(xiàn)的,因此需要對(duì)輸入的圖像進(jìn)行填充,以避免邊緣像素的影響??梢允褂?MATLAB 中的 padarray 函數(shù)對(duì)圖像進(jìn)行填充。該函數(shù)語(yǔ)法如下

B = filter2(h, A, shape)

其中,參數(shù) h 是一個(gè)二維濾波器卷積核,參數(shù) A 是一個(gè)需要進(jìn)行濾波的二維數(shù)組(通常是圖像),shape 是一個(gè)可選參數(shù),用于指定輸出數(shù)組的大小和形狀

  • 當(dāng)shapesame時(shí):輸出數(shù)組的大小與輸入數(shù)組相同,但是邊緣可能會(huì)受到卷積核的影響而變化
  • 當(dāng)shapefull時(shí):輸出數(shù)組的大小為輸入數(shù)組大小與卷積核大小之和減去1,輸出數(shù)組的邊緣受卷積核影響而擴(kuò)展
  • 當(dāng)shapevalid時(shí),輸出數(shù)組的大小為輸入數(shù)組大小與卷積核大小之差加1,輸出數(shù)組的邊緣不受卷積核影響

imfilter函數(shù):是一個(gè)通用的二維濾波器函數(shù),用于對(duì)圖像進(jìn)行濾波操作。它可以使用用戶自定義的濾波器卷積核進(jìn)行濾波,也可以使用 fspecial 函數(shù)生成的預(yù)定義濾波器卷積核進(jìn)行濾波。imfilter 函數(shù)返回一個(gè)濾波后的二維數(shù)組 B,其大小和形狀由參數(shù) options 決定??梢詫?imfilter 函數(shù)用于圖像處理任務(wù),例如平滑、銳化、邊緣檢測(cè)等。該函數(shù)語(yǔ)法如下

B = imfilter(A, h, options)

其中,參數(shù) A 是一個(gè)需要進(jìn)行濾波的二維數(shù)組(通常是圖像),參數(shù) h 是一個(gè)二維濾波器卷積核,options 是一個(gè)包含濾波選項(xiàng)的結(jié)構(gòu)體,可選參數(shù)包括:

  • 'conv':指定卷積操作;
  • 'corr':指定相關(guān)操作;
  • 'same':指定輸出大小與輸入相同;
  • 'full':指定輸出大小為輸入大小加上濾波核大小減一;
  • 'valid':指定輸出大小為輸入大小減去濾波核大小加一;
  • 'replicate':指定用邊緣值來填充圖像;
  • 'symmetric':指定用對(duì)稱方式來填充圖像;
  • 'circular':指定用循環(huán)方式來填充圖像

matlab實(shí)現(xiàn)

Image=imread('Letters-a.jpg');
noiseI=imnoise(Image,'gaussian');                %添加高斯噪聲
subplot(221),imshow(Image),title('原圖');
subplot(222),imshow(noiseI),title('高斯噪聲圖像');
result1=filter2(fspecial('average',3),noiseI);                %3×3均值濾波
result2=filter2(fspecial('average',7),noiseI);                % 7×7均值濾波
subplot(223),imshow(uint8(result1)),title('3×3均值濾波');
subplot(224),imshow(uint8(result2)),title('7×7均值濾波');

Python實(shí)現(xiàn)

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 讀取圖像
img = cv2.imread('Letters-a.jpg')

# 添加高斯噪聲
noise_img = cv2.GaussianBlur(img, (5, 5), 0)

# 顯示原圖和噪聲圖像
plt.subplot(221), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title('原圖')
plt.subplot(222), plt.imshow(cv2.cvtColor(noise_img, cv2.COLOR_BGR2RGB)), plt.title('高斯噪聲圖像')

# 3x3均值濾波
result1 = cv2.blur(noise_img, (3, 3))

# 7x7均值濾波
result2 = cv2.blur(noise_img, (7, 7))

# 顯示3x3和7x7均值濾波結(jié)果
plt.subplot(223), plt.imshow(cv2.cvtColor(result1, cv2.COLOR_BGR2RGB)), plt.title('3×3均值濾波')
plt.subplot(224), plt.imshow(cv2.cvtColor(result2, cv2.COLOR_BGR2RGB)), plt.title('7×7均值濾波')

plt.show()

(2)高斯濾波

A:高斯函數(shù)

高斯函數(shù):高斯函數(shù)是一種連續(xù)的、平滑的、鐘形曲線函數(shù),用于表示在統(tǒng)計(jì)和概率領(lǐng)域中連續(xù)隨機(jī)變量的概率密度函數(shù)。高斯函數(shù)在圖像處理、信號(hào)處理、模式識(shí)別、機(jī)器學(xué)習(xí)等領(lǐng)域廣泛應(yīng)用

  • 一維高斯函數(shù) G ( x ) = 1 σ 2 π e ? ( x ? μ ) 2 2 σ 2 G(x)=\frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{(x-\mu)^{2}}{2 \sigma^{2}}} G(x)=σ2π ?1?e?2σ2(x?μ)2?。一維高斯函數(shù)的圖像是一條鐘形曲線,它的峰值位于均值處,隨著 x x x增加或減小,函數(shù)值逐漸減小,且標(biāo)準(zhǔn)差越大,函數(shù)的寬度越大
  • 二維高斯函數(shù) G ( x , y ) = 1 2 π σ x σ y e ? ( x ? μ x ) 2 2 σ x 2 ? ( y ? μ y ) 2 2 σ y G(x, y)=\frac{1}{2 \pi \sigma_{x} \sigma_{y}} e^{-\frac{\left(x-\mu_{x}\right)^{2}}{2 \sigma_{x}^{2}}-\frac{\left(y-\mu_{y}\right)^{2}}{2 \sigma_{y}}} G(x,y)=2πσx?σy?1?e?2σx2?(x?μx?)2??2σy?(y?μy?)2?。 二維高斯函數(shù)的圖像是一個(gè)二維鐘形曲面,它的峰值位于 ( μ x , μ y ) (\mu_x,\mu_y) (μx?,μy?)處,隨著 x x x y y y的增加或減小,函數(shù)值逐漸減小,且標(biāo)準(zhǔn)差越大,函數(shù)的寬度越大

在圖像處理中,二維高斯函數(shù)通常用于進(jìn)行圖像平滑處理,即利用高斯函數(shù)的低通濾波性質(zhì),去除圖像中的噪聲和細(xì)節(jié)信息。同時(shí),高斯函數(shù)還可以用于圖像邊緣檢測(cè)、尺度空間分析等任務(wù)

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

B:高斯濾波原理

高斯濾波原理:是以某一像素為中心,在它的周圍選擇一個(gè)局部鄰域,把鄰域內(nèi)像素的灰度按照高斯正態(tài)分布曲線進(jìn)行統(tǒng)計(jì),分配相應(yīng)的權(quán)值系數(shù),然后將鄰域內(nèi)所有點(diǎn)的加權(quán)平均值代替原像素值

g ( x , y ) = ∑ r = ? k k ∑ s = ? l l f ( x ? r , y ? s ) H ( r , s ) g(x, y)=\sum_{r=-k}^{k} \sum_{s=-l}^{l} f(x-r, y-s) H(r, s) g(x,y)=r=?kk?s=?ll?f(x?r,y?s)H(r,s)

如下為典型的高斯模板

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

C:程序

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波


matlab實(shí)現(xiàn)

Image=imread('Letters-a.jpg');
sigma1=0.6; sigma2=10; r=3;  % 高斯模板的參數(shù)
NoiseI= imnoise(Image,'gaussian'); %加噪
gausFilter1=fspecial('gaussian',[2*r+1 2*r+1],sigma1);  
gausFilter2=fspecial('gaussian',[2*r+1 2*r+1],sigma2);  
result1=imfilter(NoiseI,gausFilter1,'conv');
result2=imfilter(NoiseI,gausFilter2,'conv');
imshow(Image);title('原圖');
figure;imshow(NoiseI);title('高斯噪聲圖像');
figure;imshow(result1);title('sigma1 =0.6高斯濾波');
figure;imshow(result2);title('sigma2 =10高斯濾波');

python實(shí)現(xiàn)

import cv2
import numpy as np
import matplotlib.pyplot as plt

Image = cv2.imread('Letters-a.jpg')
sigma1 = 0.6
sigma2 = 10
r = 3

NoiseI = cv2.imread('Letters-a.jpg', 0)
NoiseI = cv2.GaussianBlur(NoiseI, (3,3), 0)
NoiseI = cv2.addWeighted(NoiseI, 1.5, NoiseI, -0.5, 0)

gausFilter1 = cv2.getGaussianKernel(2*r+1, sigma1)
gausFilter1 = np.outer(gausFilter1, gausFilter1)

gausFilter2 = cv2.getGaussianKernel(2*r+1, sigma2)
gausFilter2 = np.outer(gausFilter2, gausFilter2)

result1 = cv2.filter2D(NoiseI, -1, gausFilter1)
result2 = cv2.filter2D(NoiseI, -1, gausFilter2)

plt.imshow(cv2.cvtColor(Image, cv2.COLOR_BGR2RGB))
plt.title('原圖')
plt.show()

plt.imshow(NoiseI, cmap='gray')
plt.title('高斯噪聲圖像')
plt.show()

plt.imshow(result1, cmap='gray')
plt.title('sigma1 =0.6高斯濾波')
plt.show()

plt.imshow(result2, cmap='gray')
plt.title('sigma2 =10高斯濾波')
plt.show()

(3)中值濾波

A:中值

中值:一組數(shù) x 1 , x 2 , . . . , x n x_{1},x_{2},...,x_{n} x1?,x2?,...,xn?,把 n n n個(gè)數(shù)按值的大小順序排列如下: x i 1 < x i 2 < . . . x i n x_{i_{1}}<x_{i_{2}}<...x_{in} xi1??<xi2??<...xin?,則中值為

y = { x i ( n + 1 2 ) 1 2 [ x i ( n 2 ) + x i ( n 2 + 1 ) ] n 為奇數(shù) n 為偶數(shù) y=\left\{\begin{array}{l}x_{i\left(\frac{n+1}{2}\right)} \\\frac{1}{2}\left[x_{i\left(\frac{n}{2}\right)}+x_{i\left(\frac{n}{2}+1\right)}\right]\end{array}\right. n 為奇數(shù) n 為偶數(shù) y={xi(2n+1?)?21?[xi(2n?)?+xi(2n?+1)?]?n為奇數(shù)n為偶數(shù)

B:中值濾波原理

中值濾波原理:噪聲的出現(xiàn),使被處理點(diǎn)像素比周圍像素亮(暗)許多。中值濾波則以被處理點(diǎn)為中心,選取一個(gè)鄰域窗口,窗口內(nèi)所有點(diǎn)值排序,取中值代替該點(diǎn)值

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

C:示例

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

D:中值濾波形狀

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

E:程序

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

medfilt2函數(shù):是MATLAB中的一個(gè)二維中值濾波函數(shù),用于對(duì)圖像進(jìn)行去噪處理。該函數(shù)語(yǔ)法如下

B = medfilt2(A, [M N])
B = medfilt2(A, [M N], 'symmetric')
B = medfilt2(A, [M N], 'indexed', P)

其中

  • A:輸入的圖像矩陣。
  • [M N]:中值濾波器的大小,其中MN分別表示濾波器在行方向和列方向的大小,必須為奇數(shù),默認(rèn)為[3 3]。
  • 'symmetric':指定對(duì)稱性邊界條件,即對(duì)邊緣進(jìn)行反射填充,默認(rèn)為零填充。
  • 'indexed':指定輸入圖像的像素值采用整數(shù)標(biāo)識(shí),其中P是一個(gè)向量,其長(zhǎng)度等于輸入圖像中可能出現(xiàn)的像素值的數(shù)量,向量中的值表示相應(yīng)像素值的位置

matlab實(shí)現(xiàn)

Image=rgb2gray(imread('lotus.bmp'));
noiseI=imnoise(Image,'salt & pepper',0.1);
imshow(noiseI),title('椒鹽噪聲圖像');
result=medfilt2(noiseI);                                 %3×3中值濾波
figure,imshow(uint8(result)),title('3×3中值濾波');

python實(shí)現(xiàn)

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('lotus.bmp')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
noisy_img = cv2.addSaltAndPepper(gray_img, 0.1)
plt.imshow(noisy_img, cmap='gray')
plt.title('椒鹽噪聲圖像')
plt.show()

result = cv2.medianBlur(noisy_img, 3)
plt.imshow(result, cmap='gray')
plt.title('3x3中值濾波')
plt.show()

(4)雙邊濾波

A:原理

雙邊濾波:“雙邊”意味著平滑濾波時(shí)不僅考慮鄰域內(nèi)像素的空間鄰近性,而且要考慮鄰域內(nèi)像素的灰度相似性

B F [ I ] P = 1 W P ∑ q ∈ S G σ s ( ∥ p ? q ∥ ) G σ r ( ∣ I p ? I q ∣ ) I q W P = ∑ q ∈ S G σ s ( ∥ p ? q ∥ G σ r ( ∣ I p ? I q ∣ ) G σ s ( ∥ p ? q ∥ ) = e ( ∥ p ? q ∣ ) 2 2 σ s 2 G σ r ( ∣ I p ? I q ∣ ) = e ? ( I p ? I q ) 2 2 σ r 2 \begin{array}{c}B F[I]_{P}=\frac{1}{W_{P}} \sum_{q \in S} G_{\sigma_{s}}(\|p-q\|) G_{\sigma_{r}}\left(\left|I_{p}-I_{q}\right|\right) I_{q} \\W_{P}=\sum_{q \in S} G_{\sigma_{s}}\left(\|p-q\| G_{\sigma_{r}}\left(\left|I_{p}-I_{q}\right|\right)\right. \\G_{\sigma_{s}}(\|p-q\|)=e^{\frac{(\| p-q \mid)^{2}}{2 \sigma_{s}^{2}}} G_{\sigma_{r}}\left(\left|I_{p}-I_{q}\right|\right)=e^{-\frac{\left(I_{p}-I_{q}\right)^{2}}{2 \sigma_{r}^{2}}}\end{array} BF[I]P?=WP?1?qS?Gσs??(p?q)Gσr??(Ip??Iq?)Iq?WP?=qS?Gσs??(p?qGσr??(Ip??Iq?)Gσs??(p?q)=e2σs2?(p?q)2?Gσr??(Ip??Iq?)=e?2σr2?(Ip??Iq?)2??

B:程序

(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波

matlab實(shí)現(xiàn)

Image=im2double(imread('girl.bmp'));  
NoiseI= Image+0.05*randn(size(Image)); 
w=15;       % 定義雙邊濾波窗口寬度  
sigma_s=6; sigma_r=0.1; % 雙邊濾波的兩個(gè)標(biāo)準(zhǔn)差參數(shù)  
[X,Y] = meshgrid(-w:w,-w:w); 
Gs = exp(-(X.^2+Y.^2)/(2*sigma_s^2));%計(jì)算鄰域內(nèi)的空間權(quán)值
[hm,wn] = size(NoiseI); 
result=zeros(hm,wn); 
for i=1:hm    
    for j=1:wn  
        temp=NoiseI(max(i-w,1):min(i+w,hm),max(j-w,1):min(j+w,wn));
        Gr = exp(-(temp-NoiseI(i,j)).^2/(2*sigma_r^2));%計(jì)算灰度鄰近權(quán)值        
        % W為空間權(quán)值Gs和灰度權(quán)值Gr的成績(jī)       
        W = Gr.*Gs((max(i-w,1):min(i+w,hm))-i+w+1,(max(j-w,1):min(j+w,wn))-j+w+1);      
        result(i,j)=sum(W(:).*temp(:))/sum(W(:));            
    end
end  
subplot(1,3,1),imshow(Image),title('原始圖像');  
subplot(1,3,2),imshow(NoiseI),title('隨機(jī)噪聲圖像');   
subplot(1,3,3),imshow(result),title('雙邊濾波圖像'); 

python實(shí)現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-423382.html

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 讀取圖像并將像素值轉(zhuǎn)換為浮點(diǎn)數(shù)
Image = cv2.imread('girl.bmp', cv2.IMREAD_GRAYSCALE)
Image = cv2.normalize(Image.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)

# 添加高斯噪聲
NoiseI = Image + 0.05 * np.random.randn(*Image.shape)

# 雙邊濾波
w = 15
sigma_s = 6
sigma_r = 0.1
X, Y = np.meshgrid(np.arange(-w, w+1), np.arange(-w, w+1))

# 計(jì)算鄰域內(nèi)的空間權(quán)值
Gs = np.exp(-(X**2 + Y**2) / (2 * sigma_s**2))

hm, wn = NoiseI.shape
result = np.zeros((hm, wn))

for i in range(hm):
    for j in range(wn):
        # 取出當(dāng)前像素的鄰域
        temp = NoiseI[max(i-w, 0):min(i+w, hm), max(j-w, 0):min(j+w, wn)]
        
        # 計(jì)算灰度鄰近權(quán)值
        Gr = np.exp(-(temp - NoiseI[i, j])**2 / (2 * sigma_r**2))
        
        # W 為空間權(quán)值 Gs 和灰度權(quán)值 Gr 的乘積
        W = Gr * Gs[max(i-w, 0):min(i+w, hm)-i+w+1, max(j-w, 0):min(j+w, wn)-j+w+1]
        
        # 對(duì) W 和鄰域內(nèi)像素值的乘積求和并除以 W 的和,得到當(dāng)前像素的值
        result[i, j] = np.sum(W * temp) / np.sum(W)

# 顯示圖像
plt.subplot(1, 3, 1)
plt.imshow(Image, cmap='gray')
plt.title('原始圖像')

plt.subplot(1, 3, 2)
plt.imshow(NoiseI, cmap='gray')
plt.title('隨機(jī)噪聲圖像')

plt.subplot(1, 3, 3)
plt.imshow(result, cmap='gray')
plt.title('雙邊濾波圖像')

plt.show()

到了這里,關(guān)于(數(shù)字圖像處理MATLAB+Python)第六章圖像平滑-第一節(jié):圖像平滑概述和空間域平滑濾波的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包