图像处理——图像的增强技术
圖像增強的主要目的是提高圖像的質量和可辨識度,使圖像更有利于觀察或進一步分析處理。圖像增強技術一般通過對圖像的某些特征,例如邊緣信息、輪廓信息和對比度等進行突出或增強,從而更好的顯示圖像的有用信息,提高圖像的使用價值。圖像增強技術是在一定標準下,處理后的圖像比原圖像效果更好。
圖像增強按作用域可分為空域內處理和頻域內處理,空域內處理是直接對圖像進行處理,頻域內處理是在圖像的某個變換域內,對圖像的變換系數進行運算,然后通過逆變換獲得圖像增強效果。
1 空域內處理
空域內的圖像增強就是調整灰度圖像的明暗對比度,是對圖像中各個像素的灰度值直接進行處理。常用的方法包括灰度變換增強和直方圖增強。下面分別進行介紹。
1.1 灰度變換增強
灰度變換增強是在空間域內對圖像進行增強的一種簡單而有效的方法。灰度變換增強不改變原圖像中像素的位置,只改變像素點的灰度值,并逐點進行,和周圍的其他像素點無關。為了進行灰度變換,首先需要獲取圖像的直方圖。在MATLAB中,可以通過編寫程序獲取灰度圖像的直方圖,也可以通過函數imhist( )獲取灰度圖像的直方圖。
clear all; close all; I=imread('pout.tif'); row=size(I,1); %返回矩陣I的行數 column=size(I,2); %返回矩陣I的列數 N=zeros(1, 256); %灰度圖像大小范圍是0-255,因此灰度級是256級 for i=1:rowfor j=1:columnk=I(i, j);N(k+1)=N(k+1)+1;end end figure; subplot(121); imshow(I); subplot(122); bar(N);或者直接用函數imhist( )也可以的。
clear all; close all; I=imread('pout.tif'); N = imhist(I); figure; subplot(121); imshow(I); subplot(122); bar(N);
對直方圖進行處理。
1.2直方圖增強
圖像的灰度直方圖表示灰度圖像中具有每種灰度的像素的個數,反映了圖像中每種灰度級出現的頻率,是圖像的基本統計特征之一。直方圖均衡方法因為其有效性和簡單性己成為圖像對比度增強的最常用方法。其基本思想是根據輸入圖像的灰度概率分布來確定其對應的輸出灰度值,通過擴展圖像的動態范圍達到提升圖像對比度的目的。
直方圖增強是以概率論為基礎,常用的直方圖調整方法包括直方圖均衡化和直方圖規定化兩方面。
直接用函數imhist( )獲得圖像的直方圖。
或者用這種方法獲得RGB的灰度直方圖。
clear all; close all; I=imread('onion.png'); figure; subplot(141); imshow(uint8(I)); subplot(142); imhist(I(:,:,1)); title('R'); subplot(143); imhist(I(:,:,2)); title('G'); subplot(144); imhist(I(:,:,3)); title('B');1.2.1 直方圖的均衡化
利用histeq()函數進行直方圖的均衡化。
clear all; close all; I=imread('tire.tif'); J=histeq(I); figure; subplot(121); imshow(uint8(I)); subplot(122); imshow(uint8(J)); figure; subplot(121); imhist(I, 64); subplot(122); imhist(J, 64);1.2.2 直方圖規定化
使得圖像變成自己想要的樣子。
clear all; close all; I=imread('tire.tif'); hgram=ones(1, 256); J=histeq(I, hgram); %其中,f為輸入圖像,hispec為指定的直方圖(一個由指定值構成的行向量),g為輸出圖像,其直方圖近似于指定的直方圖 figure; subplot(121); imshow(uint8(J)); subplot(122); imhist(J);2 圖像標準差
2.1 mean2() 圖像平均值
像素均值:
就是把所有通道(R、G、B)的像素求了均值。
去均值的作用:
把圖片上每個位置的值減去均值,可以一定程度上移除它們共同的部分,凸顯個性的部分,更有利于圖片的處理。下圖可以很明顯看出去均值后的變化。
2.2 std(2)求圖像標準差
采用函數std( )計算向量的標準差,通過函數std2( )計算矩陣的標準差。
clear all; close all; I=imread('pout.tif'); s1=std2(I) J=histeq(I); %獲取直方圖 s2=std2(J)2.3 medfilt2()中值濾波函數,corr2(I, J)求兩個矩陣的相似程度,圖像的相關系數
clear all; close all; I=imread('pout.tif'); %獲取灰度圖 J=medfilt2(I); %求圖像I的中值濾波 r=corr2(I, J) %求兩個矩陣的相似程度 figure; subplot(121); imshow(I); subplot(122); imshow(J);
2.4 imcontour(J,3)函數,繪制圖像等高線
通過函數imcontour( )可以繪制灰度圖像的等高線。該函數的簡單調用格式為:
imcontour(I):該函數中I為灰度圖像的二維數據矩陣,繪制灰度圖像的等高線。imcontour(I, n):該函數設置等高線的條數為n,如果不指定n,該函數會自動選取n。
3 圖像濾波
空域濾波是空域圖像增強的常用方法。空域濾波是對圖像中每個像素為中心的鄰域進行一系列的運算,然后將得到的結果代替原來的像素值。空域濾波分為線性空域濾波和非線性空域濾波。下面分別進行介紹。
空域濾波是在圖像空間中借助模板對圖像進行領域操作,處理圖像每一個像素的取值都是根據模板對輸入像素相應領域內的像素值進行計算得到的。空域濾波基本上是讓圖像在頻域空間內某個范圍的分量受到抑制,同時保證其他分量不變,從而改變輸出圖像的頻率分布,達到增強圖像的目的。
imnoise() 給圖像添加噪聲
3.1線性平均濾波是一種最常用的線性空域濾波。
線性平均濾波實際是一種低通濾波,信號的低頻部分通過,阻止高頻部分通過。由于圖像的邊緣處于高頻部分,因此線性平均濾波后,會造成圖像邊緣的模糊。
在進行線性平均濾波時,常用的模板大小為3×3,如下所示:
imfilter函數的用法
另外一種線性空域濾波處理方式
3.2 非線性空域濾波
非線性空域濾波主要包括中值濾波、順序統計濾波和自適應濾波等。中值濾波是一種保護邊緣的非線性圖像平滑方法,在圖像增強中應用非常廣泛。
3.2.1 中值濾波 medfilt2
下面首先介紹一維中值濾波,對于一維數據,按照從大到小的順序進行排列,則:
medfilt2二維中值濾波用于圖像的增強。中值濾波可以去除圖像中的椒鹽噪聲,平滑效果優于均值濾波,在抑制噪聲的同時還能夠保持圖像的邊緣清晰。在MATLAB軟件中,采用函數medfilt2( )進行圖像的二維中值濾波。
中值濾波是圖像處理中的一個常用步驟,它對于斑點噪聲(en:speckle noise)和椒鹽噪聲(en:salt-and-pepper noise)來說尤其有用。保存邊緣的特性使它在不希望出現邊緣模糊的場合也很有用。當要求在降低噪聲的同時要求保持邊緣,中值濾波較卷積有更好的效果。 在matlab中,medfilt2函數用于執行二維中值濾波,使用方法如下:
B = medfilt2(A, [m n]) ,B = medfilt2(A),B = medfilt2(A, ’indexed’, …)
其中[m n]表示鄰域塊的大小,默認值為[3 3]。b=medfilt2(a,[m,n]);b是中值濾波后的圖象矩陣,a是原圖矩陣,m和n是處理模版大小,默認3×3。
3.2.2 ordfilt2函數,順序統計濾波
ordfilt2函數
在MATLAB圖像處理工具箱中提供的二維順序統計量濾波函數。它的濾波概念是中值濾波的推廣,中值濾波是對于給定的n個數值{al ,a2,…,an},將它們按大小順序排列,取中間的那個值作為濾波器的輸出。而在ordfilt2函數中的二維順序統計量濾波將n個非零數值按小到大排序后處于第k個位置的元素作為濾波器的輸出。
ordfilt2函數語法格式為:
B=ordfilt2(A,order,domain)
B=ordfilt2(A,order,domain,S)
B=ordfilt2(…,padopt)
第一種格式的功能是:對圖像A作順序統計濾波。參數A為輸入圖像矩陣,order為序號,domain為濾波窗口。即對圖像A中大小為domain矩陣大小內的非零像素值進行升序排序,取第order個值作為輸出像素值。
第二種格式的功能是:對圖像A作順序統計濾波,前面3個參數與第一種格式相同。S是與domain大小相同的矩陣,它的每一個元素值對應domain中非零值位置的加性偏置輸出。
第三種格式的功能是:對圖像A作順序統計濾波,前面省略號代表上面二種格式的一種參數形式。padopt是控制圖像A矩陣邊界填充的形式,padopt默認設置為’zeros’,邊界被填充為0像素值,設置為’symmetric’時,A對稱地擴展邊界。
B=ordfilt2(A13,ones(5,5)),在模板內的像素值都為非零時,相當于模板為5×5的中值濾波
B=ordfilt2(A,1,ones(5,5)),在模板內的像素值都為非零時,相當于5×5的最小值濾波
B=ordfilt2(A,25,ones(5,5)),在模板內的像素值都為非零時,相當于5×5的最大值濾波
3.2.3 自適應濾波
wiener2函數估計每個像素的局部均值與方差,該函數用法如下:J=wiener2(I,[M N],noise),使用M×N大小鄰域局部圖像均值與偏差,采用像素式自適應濾波器對圖像I進行濾波,加性噪聲(高斯白噪聲)功率假定為 noise。。[J,noise]=wiener2(I,[M N]),濾波前還有估計附加噪聲的能量。
clear all; close all; I=imread('coins.png'); I=im2double(I); J=imnoise(I, 'gaussian', 0, 0.01); K=wiener2(J, [5 5]); figure; subplot(131); imshow(I); subplot(132); imshow(J); subplot(133); imshow(K);4 頻域濾波
頻率域圖像增強首先通過傅立葉變換將圖像從空間域轉換為頻率域,然后在頻率域內對圖像進行處理,最后通過傅立葉反變換轉換到空間域。頻率域內的圖像增強通常包括低通濾波、高通濾波和同態濾波等。
4.1 低通濾波
低通濾波器的功能是讓低頻率通過而濾掉或衰減高頻,其作用是過濾掉包含在高頻中的噪聲。所以低通濾波的效果是圖像的去噪聲平滑增強,但同時也抑制了圖像的邊界,造成圖像不同程度上的模糊。
clear all; close all; I=imread('coins.png'); I=im2double(I); M=2*size(I,1); N=2*size(I,2); u=-M/2:(M/2-1); v=-N/2:(N/2-1); [U,V]=meshgrid(u, v); D=sqrt(U.^2+V.^2); D0=80; H=double(D<=D0); J=fftshift(fft2(I, size(H, 1), size(H, 2))); K=J.*H; L=ifft2(ifftshift(K)); L=L(1:size(I,1), 1:size(I, 2)); figure; subplot(121); imshow(I); subplot(122); imshow(L);4.2 高通濾波
4.3 同態濾波
總結
以上是生活随笔為你收集整理的图像处理——图像的增强技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html添加鼠标右键菜单,Fabric.
- 下一篇: 浮点IP FFT