Matlab数字图像处理——图像复原
文章目錄
- 圖像復原技術
- 一、常見的噪聲類型
- 二、空域內的濾波復原方法
- 1、均值濾波
- (1)、算術均值濾波
- (2)、幾何均值濾波
- (3)、諧波均值濾波器
- (4)、逆諧波均值濾波器
- 2、統計排序濾波
- (1)、中值濾波器
- (2)、最大值濾波器
- (3)、最小值濾波器
- (4)、中點濾波器
- 3、自適應濾波
- 三、圖像復原方法
- 1、逆濾波
- 完整目錄
圖像復原技術
圖像在采集、傳送、轉換過程中會混入噪聲,造成圖像模糊、失真、有噪聲,圖像復原技術的目的是使圖像盡可能恢復到原本的樣子。
一、常見的噪聲類型
- 高斯噪聲
- 椒鹽噪聲
- 均勻分布噪聲
- 指數分布噪聲
- 伽馬分布噪聲
在Matlab中,函數 imnoise 可以給圖像加入高斯噪聲、椒鹽噪聲、泊松分布噪聲和乘性噪聲
二、空域內的濾波復原方法
1、均值濾波
(1)、算術均值濾波
令 Sxy 表示中心在點(x, y)處、大小為 m * n的矩形子窗口區域(鄰域)的一組坐標,然后計算這一組坐標所在像素值的平均值,將其賦值給點 (x, y)。
通俗點講,就是選圖像上的一塊區域,把這塊區域的所有像素點相加求平均值再賦值給這塊區域中心的那個像素點,后邊的幾種方法只是算法不同而已。
公式為:f^(x,y)=1mn∑(s,t)∈Sxyg(s,t)\hat{f}(x, y) = \frac{1}{mn}\sum_{(s, t) \in S_{xy}}g(s, t)f^?(x,y)=mn1?(s,t)∈Sxy?∑?g(s,t)
(2)、幾何均值濾波
算術均值濾波是把 Sxy 所代表點的像素值求和再取平均值,而幾何均值濾波是把像素值求乘再求像素的數量次冪。幾何均值濾波實現的平滑可與算術均值濾波相比,且丟失的圖像細節更少
公式為:f^(x,y)=[∏(s,t)∈Sxyg(s,t)]1mn\hat{f}(x, y) = \left[ \prod_{(s, t) \in S_{xy}}g(s, t)\right]^{\frac{1}{mn}}f^?(x,y)=???(s,t)∈Sxy?∏?g(s,t)???mn1?
(3)、諧波均值濾波器
諧波均值濾波器對于鹽粒噪聲效果很好,但不適用于胡椒噪聲,擅于處理高斯噪聲
公式為:f^(x,y)=mn∑(s,t)∈Sxy1g(s,t)\hat{f}(x, y) = \frac{mn}{\sum_{(s, t) \in S_{xy}} \frac{1}{g(s, t)}}f^?(x,y)=∑(s,t)∈Sxy??g(s,t)1?mn?
(4)、逆諧波均值濾波器
Q 稱為濾波器的階數,適用于減少或在實際中消除椒鹽噪聲干擾的影響。當 Q 為正時,該濾波器可消除胡椒噪聲,當 Q 為負值時該濾波器可消除鹽粒噪聲,當 Q 為 0 時,公式可化簡為算術均值濾波,當 Q = -1 時則為諧波均值濾波器。
公式為:f^(x,y)=∑(s,t)∈Sxyg(s,t)Q+1∑(s,t)∈Sxyg(s,t)Q\hat{f}(x, y) = \frac{\sum_{(s, t) \in S_{xy}}g(s, t)^{Q+1}}{\sum_{(s, t) \in S_{xy}}g(s, t)^{Q}}f^?(x,y)=∑(s,t)∈Sxy??g(s,t)Q∑(s,t)∈Sxy??g(s,t)Q+1?
下列代碼為算術均值濾波和幾何均值濾波的實例代碼及結果:
I = imread('火影9.jpg'); I = im2double(I); I = imnoise(I, 'gaussian', 0.05); %加入高斯噪聲 %算術均值濾波 PSF = fspecial('average', 3); %創建預定義的二維濾波器 J = imfilter(I, PSF); %幾何均值濾波 K = exp(imfilter(log(I), PSF));figure; subplot(131);imshow(I);title('加入高斯噪聲'); subplot(132);imshow(J);title('算術均值濾波'); subplot(133);imshow(K);title('幾何均值濾波');岡薩雷斯大佬的《數字圖像處理》那本書上確實寫了幾何均值濾波比算術均值濾波要保留更多細節,我tm咋感覺是假的呢 o(一︿一+)o,結果如下:
2、統計排序濾波
其實我覺得和均值濾波的原理差不多,都是選取一塊區域,把這塊區域里的像素們(一長串數字)進行各種運算操作。
(1)、中值濾波器
中值濾波函數:medfilt2
正如其名字一樣,使用一個像素鄰域中的灰度級的中值來替代該像素的值。該濾波器針對單極或雙極脈沖噪聲尤其有效
公式為:f^(x,y)=median(s,t)∈Sxy{g(s,t)}\hat{f}(x, y) = median_{(s, t) \in S_{xy}} \left\{ g(s, t) \right\}f^?(x,y)=median(s,t)∈Sxy??{g(s,t)}
從結果可以看出,圖像很好的去除了椒鹽噪聲,但是圖像有些模糊了:
(2)、最大值濾波器
就是對鄰域中的所有像素點取最大值賦值給該像素點,最大值濾波器對于發現圖像中的最亮點非常有用!另外它會從黑色物體邊緣去除一些黑色像素
公式為:f^(x,y)=max(s,t)∈Sxy{g(s,t)}\hat{f}(x, y) = max_{(s, t) \in S_{xy}} \left\{ g(s, t) \right\}f^?(x,y)=max(s,t)∈Sxy??{g(s,t)}
(3)、最小值濾波器
就是對鄰域中的所有像素點取最小值賦值給該像素點,最小值濾波器對于發現圖像中的最暗點非常有用!另外它會從白色物體邊緣去除一些白色像素
公式為:f^(x,y)=min(s,t)∈Sxy{g(s,t)}\hat{f}(x, y) = min_{(s, t) \in S_{xy}} \left\{ g(s, t) \right\}f^?(x,y)=min(s,t)∈Sxy??{g(s,t)}
(4)、中點濾波器
選取最大值與最小值的中點(就是最大最小值的平均)替換該點的像素值,結合了統計排序和求平均,對于處理隨機噪聲表現很好,比如高斯噪聲或均勻噪聲。
公式為:f^(x,y)=12[max(s,t)∈Sxy{g(s,t)}+min(s,t)∈Sxy{g(s,t)}]\hat{f}(x, y) = \frac{1}{2} [ max_{(s, t) \in S_{xy}} \left\{ g(s, t) \right\} + min_{(s, t) \in S_{xy}} \left\{ g(s, t) \right\} ] f^?(x,y)=21?[max(s,t)∈Sxy??{g(s,t)}+min(s,t)∈Sxy??{g(s,t)}]
- 二維順序統計濾波函數:ordfilt2,可以實現中值、最大最小值濾波
結果展示:
3、自適應濾波
二維自適用去噪濾波:wiener2,自適應濾波器的性能比目前所有濾波器的性能都好
I = imread('火影9.jpg'); I = rgb2gray(I);%I = imcrop(I, [100, 100, 200, 200]); %圖像裁剪I = imnoise(I, 'gaussian', 0, 0.003); %加入高斯噪聲 [K, noise] = wiener2(I, [5, 5]);figure; subplot(121);imshow(I);title('加入高斯噪聲'); subplot(122);imshow(K);title('自適應濾波');可以看出,效果還不錯:
三、圖像復原方法
1、逆濾波
大意就是我們知道了原圖受到了什么算法(叫做退化函數 H )帶來的噪聲,那么我們從噪聲圖反著用這個算法就可以推算出原圖。
不過即使知道了退化函數,也還是不能完全恢復到原圖。
其中,fftfilter函數如下:
function Z = fftfilter(X, H) F = fft2(X, size(H, 1), size(H, 2)); Z = H .* F; Z = ifftshift(Z); Z = abs(ifft2(Z)); Z = Z(1:size(X, 1), 1:size(X, 2)); end完整目錄
Matlab數字圖像處理——圖像處理工具箱Image Processing Toolbox
Matlab數字圖像處理——圖像類型的轉換
Matlab數字圖像處理——圖像文件的讀取
Matlab數字圖像處理——圖像文件的顯示
Matlab數字圖像處理——視頻文件的讀寫
Matlab數字圖像處理——圖像的像素運算(灰度變換)
Matlab數字圖像處理——圖像的空間變換
Matlab數字圖像處理——圖像的平移、鄰域操作、區域選取
Matlab數字圖像處理——圖像增強
Matlab數字圖像處理——圖像復原
總結
以上是生活随笔為你收集整理的Matlab数字图像处理——图像复原的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无刷滑环全面分析大全
- 下一篇: 简记_关于刷三防漆的几点个人见解