matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21
數(shù)字圖像處理期末復習2018-12-21
愉快先生
0.204
·
字數(shù) 5547 · 閱讀 1834
2018-12-22 19:35
(數(shù)字圖像岡薩雷斯第二版教材)
一、基本原理
- 圖像的讀取、存儲操作:
i= imread('filename') ; imwrite(i,’image.jpg’);
- 圖像顯示的?法及區(qū)別:
imshow(i); imshow(i,[]);%0~255映射 imshow(i,[min max])%指定映射區(qū)間min到max
解釋:見博客:https://blog.csdn.net/Michael__Corleone/article/details/68483407
問題:在使用imshow(A)顯示一張灰度圖片時,顯示出的是一張純白的圖片。(A為double類型的圖像矩陣)
原因:在matlab中,為了保證精度,經(jīng)過了運算的圖像矩陣A其數(shù)據(jù)類型會從unit8型變成double型。
imshow()顯示圖像時對double型是認為在0~1范圍內(nèi),即大于1時都是顯示為白色。
imshow顯示uint8型時是0~255范圍。
使用imshow(A,[]),即可把圖像矩陣A顯示為正常的灰度圖像。
原理:imshow(A,[])是將A的最大值(max(A))和最小值(min(A))分別作為純白(255)和純黑(0),
中間的K值相應地映射為0到255之間的標準灰度值,這樣就可以正常顯示了。
相當于將double型的矩陣A拉伸成為了0-255的uint8型的矩陣,因此就可以正常顯示。
- 圖像的索引操作
見數(shù)字圖像處理第二版P14 索引=下標
二、圖像灰度變換和空間濾波
- 圖像常見灰度變換及適用場合
- gamma變換
教材P24
g=imadjust(f,[low high],[new_low new_high],gamma)
1.將f中灰度值映射為圖g中新值。
2.low high (輸入的值)在0到1之間
3.gamma>1突出亮區(qū); gamma<1突出暗區(qū)
- log(突出暗部細節(jié))
G = intrans(F, 'log', C, CLASS)
g=c*log(1+f)
- stretch變換(灰度拉伸變換)
G = intrans(F, 'stretch', M, E)
g=1./(1+(m./f).^E) %m是閾值在0到1之間 E是斜率
使圖像亮的地方更亮,暗的地方更暗,從而增加圖像的可視細節(jié)
- 圖像直方圖處理
- 直方圖含義及特點
- imhist(f)
- 含義: 反映圖片包含各個灰度所占百分比 (王美麗啥都會經(jīng)常叨咕的)
- 特點:與空間位置無關(guān),對幾何攻擊不敏感
- 直方圖均衡化的思想、步驟、實現(xiàn)
- 處理骨骼挺好的。
- 思想:把輸入圖像否認灰度級擴展到較寬灰度級范圍來實現(xiàn)圖像增強。
- 步驟:新的灰度是原始灰度的累加,累計概率密度映射
- 實現(xiàn)代碼:g=histeq(f,256)
- 直方圖匹配(規(guī)定化)的思想、步驟、實現(xiàn)
- g=histeq(f,p)
- 答:生成具有特定直方圖的圖像方法,稱為直方圖匹配或直方圖規(guī)定化
- 1.直方圖規(guī)定化(直方圖匹配)是將變換過程加以控制,
- 能夠修正直方圖的形狀,或得到具有指定直方圖的輸出圖像。
- 有選擇地增強某個灰度范圍內(nèi)的對比度或使圖像灰度值滿足某種特定的分布。
- 2.直方圖規(guī)定化是在運用均衡化原理的基礎(chǔ)上,
- 通過建立原始圖像和期望圖像(待匹配直方圖的圖像)之間的關(guān)系,
- 使原始圖像的直方圖匹配特定的形狀,
- 彌補直方圖均衡化不具備交互作用的特性。
- 空間濾波
- 空間濾波的處理思想:利用模板對圖像進行卷積
- 均勻濾波:
- h = fspecial(type,parameter);
- g = imfilter(f,w,’replicate’);
平均濾波器: h = fspecial('average',hsize)
高斯濾波器: h = fspecial('gaussian',hsize,sigma)
圓盤濾波器: h = fspecial('disk',radius)
運動濾波器: h = fspecial('motion',len,theta)
- 銳化濾波
教材P50
sobel算子 : h = fspecial('sobel')
prewitte算子 : h = fspecial('prewitte')
log算子 : h = fspecial('log',hsize,sigma)
lapalase算子 : h = fspecial('laplacian',alpha)
- 統(tǒng)計排序濾波器(非線性空間濾波器)
g=ordfilt2(f,order,domain)
最小濾波器:g=ordfilt2(f,1,ones(m,n));
最大濾波器:g=ordfilt2(f,m*n,ones(m,n));
最知名的中值濾波器:g=ordfilt2(f,(m*n+1)/2,ones(m,n));
中值濾波器專用實現(xiàn):g=medfilt2(f,[m n],padopt);
%數(shù)組[m n]定義一個大小為m*n的鄰域(在該鄰域上計算中值)
%padopt指定三個可能的邊界填充選項之一:
%‘zeros’(默認值),‘symmetric’指出f按照鏡像反射方式沿邊界擴展
%‘indexed‘表示若f是double類的則用1填充,否則用0填充。
默認形式:g=medfilt2(f);使用一個大小為3*3的鄰域并用0填充邊界計算中值。
中值濾波器對椒鹽噪聲處理很好。
三、圖像傅里葉變換和頻率與處理
如果看了此文你還不懂傅里葉變換,那就過來掐死我吧【完整版】
- 傅里葉變換的性質(zhì):
- 答:頻譜共軛對稱性,線性,周期性,旋轉(zhuǎn)不變性,時域卷積對應頻域乘積
- 傅立葉圖像反映的信息有什么物理含義:
- 答:四個角亮代表圖像高頻信息,中間大部分代表低頻信息。
- 怎么對圖像實現(xiàn)傅立葉變換,怎么對頻譜中心進行平移?
- 答:F=fft2(f); F=fftshift(F)
- 頻域內(nèi)圖像處理的流程是什么?
- 答:
- 1.使用paddedsize獲得填充參數(shù):PQ = paddedsize(size(f));%如果輸入是彩色圖像,必須要灰度化rgb2gray。
- 2.得到使用填充的傅里葉變化:F = fft2(f, PQ(1), PQ(2));
- 3.生成一個大小為PQ(1) X PQ(2) 的濾波函數(shù)H。如果該濾波函數(shù)已居中,使用前要令H = fftshift(H)。
- 4.將變換乘以濾波函數(shù):G = H.*F;
- 5.獲得G的傅里葉逆變換的實部:g = real(ifft2(G));
- 6.將左上部分的矩形剪切為原來尺寸大小:
- g = g(1:size(f,1), 1:size(f, 2));
f=imread('C:甥敳獲liulangDesktopest.jpg');g=rgb2gray(f);% 利用imread讀出一副圖像,顯示圖像 f = imread (‘….’);
f = im2double(g); % 將圖片類型轉(zhuǎn)成double類型;
h=fspecial('average');% 利用fspecial生成一個空間濾波器,濾波器類型自定義 h= fspecial(…);
PQ=paddedsize(size(f))% 利用paddedsize設計頻率濾波器的大小 PQ=paddedsize(size(f));
H=freqz2(h,PQ(2),PQ(1))% 利用freqz2生成相應的頻域濾波器H = freq2(h, PQ(2),PQ(1));
F=fftshift(fft2(f,PQ(1),PQ(2)))% 利用函數(shù)fft2計算圖像的傅里葉變換 F = fft2 (f, PQ(1),PQ(2)));要中心平移,產(chǎn)生的濾波器原點在矩陣中心處
f=imfilter(f,h);% 利用imfilter和h進行空間濾波;
J=F.*H;J=ifft2(J);J=abs(J);% 將F和H相乘,在做ifft2變換,再取實部,再進行剪切,得到頻域濾波結(jié)果
J=J(1:size(f,1),1:size(f,2));%size里面兩個參數(shù)
figure,subplot(131),imshow(g,[]),title('灰度圖')% 對比頻域濾波和空間濾波的區(qū)別
subplot(132),imshow(J,[]),title('頻域濾波')
subplot(133),imshow(f,[]),title('空間濾波')
頻率域濾波的基本步驟.jpg
- 頻域內(nèi)的低通和高通濾波器有幾種類型?每種有什么特點?適用于什么場合?
- 答:(都是頻域平滑)
- 理想低通:理想低通濾波器的平滑作用非常明顯,但由于變換有一個陡峭的波形,它的反變換h(x,y)有強烈的振鈴特性,使濾波后圖像產(chǎn)生模糊效果。因此這種理想低通濾波實用中不能采用。
- 會有【振鈴現(xiàn)象】。
- 巴特沃茲低通:在通過頻率與截止頻率之間沒有明顯的不連續(xù)性,不會出現(xiàn)“振鈴”現(xiàn)象,其效果好于理想低通濾波器。
- 階處沒有振鈴,2階有但看不出來,隨著階數(shù)升高,振鈴越明顯。
- 高斯低通:高斯低通濾波器從通過頻率到截止頻率之間沒有明顯的不連續(xù)性,而是存在一個平滑的過渡帶,無明顯的振鈴現(xiàn)象。
- 高斯則無振鈴,因為其DFT也是高斯。但高斯與2階巴特沃斯相比,效果差點。
- 因此,在需要嚴格控制低頻和高頻截止頻率的過渡的情況下,巴特沃斯低通是最好的選擇。除此之外,高斯最佳。
- 高頻濾波器:除了上述的三種之外,還有高頻強調(diào)濾波器,由于高通濾波器偏離了直流分分量,從而把圖像的平均值降低到了0,。一種補償方法是給高通濾波器加上一個偏移量。若偏移量與濾波器乘以一個大于1的常數(shù)結(jié)合,則這種方法就稱為高頻強調(diào)濾波,因為該常量乘數(shù)突出了高頻部分。這個乘數(shù)同時增加了低頻部分的幅度,但是只要偏移量與被乘數(shù)比較小,低頻增強的影響就弱于高頻增強的影響。
四、圖像復原
image.png
- 圖像降質(zhì)模型的空間域和頻率域表示
答:退化后的圖像=退化函數(shù)*原圖像+一個加性噪聲
空間域:卷積
空間域卷積操作:h是退化函數(shù),f是原圖像,+噪聲函數(shù),g是退化后圖片
頻率域:乘積
頻域乘積操作:H是退化函數(shù),F是原圖像,+噪聲,G是退化后的圖像
- 幾種噪聲模型:
高斯噪聲,Rayleigh噪聲,指數(shù)噪聲,均勻噪聲,salt-and-pepper噪聲,伽馬噪聲。
六種
- 圖像中噪聲的估計流程
答:
1.均勻區(qū)域法是評估噪聲最簡單的方法。均勻區(qū)域法從圖像中選擇均勻區(qū)域, 通過計算這些均勻區(qū)域的標準差獲取圖像的噪聲評估結(jié)果。需要說明的是,均勻區(qū)域是指該區(qū)域是平坦的,且在區(qū)域內(nèi)像素值之間的差異不大。
2.分塊法是假設圖像由大量均勻的小塊構(gòu)成, 利用各小塊的方差進行噪聲估計。
- 圖像中降噪的方法
答:空間濾波:均值濾波器,統(tǒng)計排序濾波器,自適應濾波器。
頻率域濾波消除周期噪聲:帶阻濾波器,帶通濾波器,陷波濾波器,最佳陷波濾波
- 均值濾波器:
- 算術(shù)均值(窗口越大模糊越大)
- 幾何均值(比算數(shù)均值好些)
- 諧波均值濾波器
- 處理鹽噪聲比較好
- 逆諧波均值濾波器(處理單值)
- Q為正:處理椒噪聲
- Q為負:處理鹽噪聲
- Q為-1:諧波濾波器
- Q為0:算數(shù)均值濾波器
- 統(tǒng)計排序濾波器
- 中值濾波器
- 處理椒鹽噪聲最好;
- 最大值最小值濾波器
- 最大值濾波器處理椒噪聲;
- 最小值濾波器處理鹽噪聲;
- 中點濾波器
- 簡單計算最大值最小值中點
- 處理高斯噪聲或均勻噪聲
- 修正的阿爾法均值濾波器
- d=0: 算術(shù)均值濾波器
- d=(mn-1)/2 :中值濾波器
- 自適應濾波器
- 自適應局部降低噪聲濾波器
- 自適應中值濾波器
- 去除椒鹽噪聲
- 平滑非椒鹽噪聲
- 并減少諸如物體邊界細化或粗化等失真
在自適應中值濾波算法中,A步驟里面會先判斷是否滿足Zmin
這一步驟實質(zhì)是判斷當前區(qū)域的中值點是否是噪聲點,
通常來說是滿足Zmin
此時中值點不是噪聲點,跳轉(zhuǎn)到B;
考慮一些特殊情況,如果Zmed=ZminZmed=Zmin或者Zmed=ZmaxZmed=Zmax,
則認為是噪聲點,應該擴大窗口尺寸,在一個更大的范圍內(nèi)尋找一個合適的非噪聲點,
隨后再跳轉(zhuǎn)到B,否則輸出的中值點是噪聲點;
接下來考慮跳轉(zhuǎn)到B之后的情況:判斷中心點的像素值是否是噪聲點,判斷條件為Zmin
原理同上,因為如果Zxy=ZminZxy=Zmin或者Zxy=ZmaxZxy=Zmax,
則認為是噪聲點。
如果不是噪聲點,我們可以保留當前像素點的灰度值;
如果是噪聲點,則使用中值替代原始灰度值,濾去噪聲。
空間噪聲濾波器函數(shù)
f = spfilt(g,type,m,n,parameter)
--------
% f = spfilt(g,'amean',m,n) 算術(shù)均值濾波器
% f = spfilt(g,'gmean',m,n) 幾何均值濾波器
% f = spfilt(g,'hmean',m,n) 諧波均值濾波器
% f = spfilt(g,'chmean',m,n,q) 逆諧波均值濾波器 ,Q 缺省值為 1.5
% f = spfilt(g,'median',m,n) 中值濾波器
% f = spfilt(g,'max',m,n) 最大值濾波器
% f = spfilt(g,'min',m,n) 最小值濾波器
% f = spfilt(g,'midpoint',m,n) 中點濾波器
% f = spfilt(g,'atrimmed',m,n,d) 修正的阿爾法均值濾波器
- 周期噪聲處理方法:
- 帶通濾波器
- 允許在一定頻率范圍內(nèi)的信號通過而阻止其他頻率范圍內(nèi)信號通過的濾波器。
- 帶阻濾波器
- 阻止一定頻率范圍內(nèi)的信號通過而允許其他頻率范圍內(nèi)信號通過的濾波器。
- 如果利用帶通濾波器把某個頻率帶中的頻率分量提取出來,然后將其從
- 圖像中減去,也可獲得消除或減弱圖像中某個頻率范圍內(nèi)分量的效果。
- 陷波濾波器
- 可以阻止或通過以某個頻率為中心的一段范圍里的頻率,本質(zhì)上是帶阻或帶通濾波器,且可分別稱為陷波帶阻濾波器和 陷波帶通濾波器。
- 退化系統(tǒng)估計的方法有什么?
- 答:
- 1.圖像觀察估計法:根據(jù)經(jīng)驗。
- 2.圖像試驗估計法:使用與被退化圖像設備相似的裝置,并得到一個脈沖
- 的沖激響應,可以進行較準確的退化估計。
- 圖像復原的方法及實現(xiàn)
- 答:
- 逆濾波
- 退化函數(shù)H(u,v)的推測。
- 盡可能不讓噪聲項N(u,v)影響畫質(zhì)。
逆濾波公式
- 半徑截止的逆濾波:
- 帶半徑的逆濾波的半徑要試,不容易確定。
- 最小均方誤差(維納)濾波
- 未退化圖像和噪聲的功率譜必須是已知的;
- 功率比(信噪比)常數(shù)K 的估計一般還是沒有合適的解。
- 當噪聲信息比NSR等于0時,此時維娜濾波等同于逆濾波。因此可以直接使用matlab自帶deconvwnr函數(shù),將第三個參數(shù)NSR設置成0即可。
J = deconvwnr(I,PSF)
J = deconvwnr(I,PSF,NSR)
J = deconvwnr(I,PSF,NCORR,ICORR)
I是退化圖像
PSF系統(tǒng)函數(shù)(點擴散函數(shù))
NSR信噪比
NCORR:噪聲的自相關(guān)函數(shù)
ICORR:退化圖像的自相關(guān)函數(shù)
J:復原圖像
clc,clear,close all;
i=imread('C:甥敳獲liulangDesktopwind.jpg')
figure,subplot(321),imshow(i,[]),title('原圖你懂的'),
L=100;
T=11;
PSF=fspecial('motion',L,T);
blu=imfilter(i,PSF,'circular','conv');
subplot(322),imshow(blu,[]),title('跑得快')
noise = 0.1*randn(size(i)); % 生成噪聲信號
blurredNoisy = imadd(blu,im2uint8(noise)); % 加入圖像
subplot(323),
imshow (blurredNoisy,[]);
title('有噪聲并且運動模糊')
i1=deconvwnr(blu,PSF);
subplot(324),
imshow(i1),title('逆濾波-運動模糊')
subplot(325),
i2=deconvwnr(blurredNoisy,PSF),imshow(i2),title('逆濾波-有噪聲有運動模糊')
NSR=sum(noise(:).^2)/sum(im2double(i(:)).^2);
i3=deconvwnr(blurredNoisy,PSF,NSR);
subplot(326),imshow(i3),title('空間信噪比-維納濾波???')
NP=abs(fftn(noise)).^2;%對噪聲傅里葉變換 fftn 能量譜
NCORR=fftshift(real(ifftn(NP)));%噪聲自相關(guān)函數(shù),平不平移都可以
IP=abs(fftn(im2double(i))).^2;%圖像功率譜
ICORR=fftshift(real(ifftn(IP)));%圖像自相關(guān)函數(shù)
figure, i4=deconvwnr(blurredNoisy,PSF,NCORR,ICORR);
imshow(i4),title('自相關(guān)-維納濾波????')
五、圖像重建
- 圖像的投影變換
- 1、R = radon(I, theta)
- 返回亮度圖像在角度theta下的Radon變換R。
- Radon變換是一幅圖像在一個特定的角度下的徑向線方向的投影。如果theta是一個標量,R則是一個包含在theta的列向量。如果theta是一個向量,R則是一個矩陣,據(jù)真的每一列是對應其中一個theta的Radon變換。如果忽略掉theta,則其默認為0:179.
- 2、[R,xp] = radon(...)
- 應于R中的每一行,返回一個包含徑向坐標的向量xp。xp中的徑向坐標是沿著X’軸的數(shù)值,其為在theta下,X’軸逆時針方向映射來的。兩個坐標系的原點為圖像的中心點,且為floor((size(me)+1)/2),例如在一個20-by-30的圖像中,其中心點為(10,15)。
- 算法講解:一幅圖像的Radon變換是每一個像素Radon變換的集合。此算法首先將一個像素分成四個子像素,并且四個子像素分別投影,如下圖所示:
- 通過投影的位置以及bin的中心,每一個子像素的作用是按比例分裂兩個最相鄰的bins。如果子像素的投影與一個bin的中心相接,則坐標軸上的bin獲得子像素的值,或者原始大小像素的1/4的值。如果子像素投影時,投影到了量bins之間,則子像素的值按比例分給兩個bins。
- 圖像重建的方法及實現(xiàn)
- 直接反投影重建:
- 出現(xiàn)的問題:星狀偽影 圖像模糊 振鈴現(xiàn)象
- 傅里葉反投影重建:
降低振鈴現(xiàn)象
中心切片定理指出:f(x,y)在某一方向上的投影函數(shù)gθ(R)的一維傅立葉變換函數(shù)Gθ(ρ)是原函數(shù)f(x,y)的二維傅立葉變換函數(shù)F(ρ, θ)在(ρ, θ)平面上沿同一方向且過原點的直線上的值。
1.計算每個投影的一維傅里葉變換
2.用一個濾波函數(shù)|w|乘以每個傅里葉變換,就是加窗。
3.得到每個濾波后的一維反傅里葉變換。
4.將3得到的求和
- 濾波反投影重建
濾波反投影法(加漢明窗)復原的圖像很好的消除了“暈環(huán)現(xiàn)象”。
'Ram-Lak' 矩形窗
'Shepp-Logan' 正弦窗 平滑了圖像,損失了部分高頻信息
'Cosine' 余弦窗
'Hamming' 通用hanmming窗 降低了高頻噪聲, 可得到Hamming濾波器和Hanning濾波器
'Hann'
'none'
clear;close all; clc;
g = phantom ('Modified Shepp-Logan',600);
subplot(241);imshow(g,[]);title ('original image')
theta = 0:0.5:179.5;
[R,xp] = radon(g,theta);
f3 = iradon(R,theta,'Shepp-Logan');
subplot(245);imshow(f3,[]);title ('Reconstructed Image with Shepp-Logan filter')
f4 = iradon(R,theta,'Cosine');
subplot(246);imshow(f4,[]);title ('Reconstructed Image with Cosine filter')
f5 = iradon(R,theta,'Hamming');
subplot(247);imshow(f5,[]);title ('Reconstructed Image with Hamming filter')
六、圖像分割
- 基于不連續(xù)點的分割
- 點檢測:如果一個孤立點與它周圍的點不同,則可以使用上述模板進行檢測。
- 點檢測的另外一種方法是在mn大小的鄰域中,
- 找到其最大像素值點和最小像素值點,其差值大于閾值的那些點則可認為是圖像中的孤立點。
- g= ordfilter2(f,mn,ones(m,n))-ordfilter2(f,1,ones(m*n));
- g= g>=T
- 線檢測,4個模板 6個【-1】和3個【2】的排列組合;檢測水平數(shù)值45度。
- Canny算子的檢測的流程及實現(xiàn)
- Step1:利用高斯濾波對圖像平滑 (去噪)
- Step2:利用梯度算子的計算圖像的梯度和梯度方向(求導)
- Step3: 進行非極大值抑制(初步得到邊緣點)
- Step4: 雙閾值連接邊緣
clc;clear
f = imread('Fig1006(a)(building).tif');
subplot(231);imshow(f);title('原始圖像')
gv1 = edge(f,'sobel','vertical');
subplot(232);imshow(gv1);title('sobel邊緣')
gv2 = edge(f,'prewitt','vertical');
subplot(233);imshow(gv2);title('prewitt邊緣')
gv3 = edge(f,'roberts','vertical');
subplot(234);imshow(gv3);title('robert邊緣')
gv4 = edge(f,'log');
subplot(235);imshow(gv4);title('log邊緣')
gv5 = edge(f,'canny');
subplot(236);imshow(gv5);title('canny邊緣')
- Hough變換
- 點線的對偶性:圖像空間中的一條線對應Hough空間中的一個點
- 圖像空間中的一個點(x0, y0)能映射為Hough空間中的一條直線
- Hough空間中兩條線的交點用來表示過點(x0,y0)和點(x1,y1)的直線
- 把在圖象空間中的檢測問題轉(zhuǎn)換到參數(shù)空間 里,通過在參數(shù)空間里進行簡單的累加統(tǒng)計完成檢測任務
- 在Hough空間中找某些點,通過這些點的線數(shù)最多。如左圖所示的A點和B點,分別有三條線通過這兩點。
- X-Y平面中的一點對應參數(shù)空間的一條正弦曲線
- 把在圖像空間中檢測直線的問題轉(zhuǎn)化為在極坐標參數(shù)空間中找通過點(r,θ)的最多正弦曲線數(shù)的問題。
[H, theta, rho] = hough(BW)
[H, theta, rho] = hough(BW, Parameter1, Parameter2)
BW是二值圖像
Parameter1:指定了theta方向的分辨率
Parameter2:指定了lamda方向的分辨率
H:hough變換空間矩陣
Theta和rho:為返回的theta和lamda值
peaks = houghpeaks(H, numpeaks)
H是hough變換矩陣空間
Numpeaks指定峰值的數(shù)目
Peaks是容納峰值的行列坐標的矩陣
lines = houghlines(BW, theta, rho, peaks)
lines = houghlines(..., param1, val1, param2, val2)
從hough變換空間選出候選峰值后,利用峰值所對應的theta和rho值找到直線的位置。
clc;clear;close all;
f = imread('building.tif');
subplot(231);imshow(f);title('原始圖像')
[bw,tc] = edge(f,'canny',[0.04 0.10],1.5);
subplot(232);imshow(bw);title('邊緣檢測結(jié)果')
[H,theta,rho] = hough(bw,1);
subplot(233);imshow(H,[]);title ('hough變換空間')
axis on, axis normal
[r,c] = houghpeaks(H,5);
subplot(234);plot(theta(c),rho(r),'linestyle','none',...
'marker','s','color','k')
title('帶有所選5個峰值的位置的 Hough 變換')
lines = houghlines(f,theta,rho,r,c);
subplot(235)
imshow(f);hold on;
for k = 1:length(lines)
xy = [lines(k).point1;lines(k).point2];
plot(xy(:,2),xy(:,1),'LineWidth',4,'Color','r');
hold on;
end
title('Hough 變換峰值對應的線段')
- 基于閾值的分割
- 全局閾值
- 均值迭代閾值選擇分割與實現(xiàn)
- 選擇一個T的初始估計值
- 用T分割圖像,生成兩組像素:G1由所有灰度值大 于T的像素組成,而G2由所有灰度值小于或等于T的 像素組成
- 對區(qū)域G1和G2中的所有像素計算平均灰度值μ1和μ2
- 計算新的閾值 T = ( μ1+ μ2)/2
- 重復步驟2到4,直到逐次迭代所得的T值之差小于事先定義的參數(shù)T0
clc;clear;close all;
f = imread('fingerprint.tif');
subplot(221);imshow(f,[]);title(‘原圖');
subplot(222);imhist(f);title(‘直方圖');
T = mean2(f);
done = false;
while ~done
g = f>=T;
Tnext = 0.5*(mean(f(g)) + mean(f(~g)));
done = abs(T - Tnext) < 0.5;
T = Tnext;
end
g = f<=T;
subplot(2,2,3:4);imshow(g,[])
title(‘分割結(jié)果')
- 最大類間方差方法選擇閾值分割與實現(xiàn)。
- Step1:將初始閾值T設為0,類間方差初始值為0;
- Step2:用T分割圖像,生成兩組像素:G1由所有灰度值大于T的像素組成,而G2由所有灰度值小于或等于T的像素組成
- Step3:對區(qū)域G1和G2中的所有像素計算μ1,μ2 , ω1, ω2 ,進而計算類間方差,
- Step4:如果類間方差大于初始值,則將該類間方差賦給初始類間方差
- Step5:將T遍歷整個圖像灰度,找到最大類間方差所對應的圖像灰度值即為最優(yōu)閾值
clc;clear;close all;
f = imread('small-blob.tif');
subplot(221);imshow(f,[]);title(‘原始圖像');
subplot(222);imhist(f);title('直方圖');
T = mean2(f);
done = false;
while ~done
g = f>=T;
Tnext = 0.5*(mean(f(g)) + mean(f(~g)));
done = abs(T - Tnext) < 0.5;
T = Tnext;
end
g = im2bw(f,T/255);
subplot(2,2,3);imshow(g,[]); title('迭代閾值處理后的圖像')
th = graythresh(f);
g1 = im2bw(f,th);
subplot(2,2,4);imshow(g1,[]);title(‘Otsu閾值處理后的圖像')
- 局部閾值分割
- 局部統(tǒng)計閾值分割的思想與實現(xiàn)
- Step1: 計算每個像素鄰域內(nèi)的均值mxy和標準差σxy
- Step2:計算可變閾值Txy :
- Txy = aσxy+bmxy
- Step3:根據(jù)Txy分割圖像
clc;clear;close all;
f = imread('cell.tif');
f= rgb2gray(f);
subplot(221);imshow(f,[]);title('original image');
zones = ones(3,3);
mean = uint8(imfilter(double(f),zones/9));
std = uint8(stdfilt(f,zones));
subplot(222);imshow(std,[]);title('standard image');
a=10;b=0.5;
g = (f>a*std & f>b*mean);
subplot(223);imshow(g,[]);title('local segmented image');
th = graythresh(f);
g1 = im2bw(f,th);
subplot(224);imshow(g1,[]);title('Otsu segmented image')
- 移動平均閾值分割
- 局部閾值處理方法的一種特殊情況是:沿著一幅圖像的掃描線計算移動平均。典型的掃描是以zigzag模式逐線執(zhí)行,進而減少照明偏差。令Zk+1表示在掃描順序中,在第k+1步遇到的一個點。
clc;clear;close all;
f = imread('word.tif'); [M,N]=size(f);
f0= double(f);
subplot(131);imshow(f,[]);title('original image');
f1 = f0(:);
maf = ones(1,20)/20;
ma =filter(maf,1,f1);
k =0.5;
g = f1 > k*ma;
g = reshape (g,M,N);
subplot(132);imshow(g,[]);title(‘moving thresh segmented image');
TH = graythresh(f);
g1 = im2bw(f,TH);
subplot(133);imshow(g1,[]);title('otsu segmented image');
- 基于區(qū)域的分割
- 區(qū)域增長算法:流程,會計算
- 定義:區(qū)域生長是把圖像分割成特征相似的若干小區(qū)域,比較相鄰小區(qū)域的特征,若相似則合并為同一區(qū)域,如此進行直到不能合并為止,最后生成特征不同的各區(qū)域。也稱為區(qū)域擴張法。
- 選擇合適的種子點
- 確定相似性準則(生長準則)
- 確定生長停止條件
- 采用的判斷準則是:如果所考慮的象素與種子象素灰度值差的絕對值小于某個門限T,則將該象素包括進種子象素所在的區(qū)域
- 生長準則:基于區(qū)域灰度差 基于區(qū)域灰度分布統(tǒng)計性質(zhì) 基于區(qū)域形狀
[G, NR, SI, TI] = regiongrow(F, S, T).
F:被分割的圖像
S:種子點圖像或者一個標量(灰度值,所有具有這個灰度的像素都被記為種子點)
T:閾值數(shù)組或者標量,確定相似準則。
G:輸出的分割圖像
NR:輸出的區(qū)域個數(shù)
SI:種子點圖像
TI:閾值測試圖像
clear; close all; clc;
I = imread('Fig1014(a)(defective_weld).tif');
subplot(221);imshow (I,[]);title('original image');
[G, NR, SI, TI] = regiongrow(I, 255, 0.26*255);
subplot(222);imshow (SI,[]);title('seed image');
subplot(223);imshow (TI,[]);title('threshold image');
subplot(224);imshow (G,[]);title('segmented image');
- 區(qū)域分裂與合并:會計算怎么分裂怎么合并
- 另外一種分割的想法: 先從整幅圖像開始通過不斷分裂,得到各個區(qū)域(在實際中,先將圖像分成任意大小且不重疊的區(qū)域,然后再合并或分裂這些區(qū)域,以滿足分割的要求),在這類方法中,常根據(jù)圖像的統(tǒng)計特性設定圖像區(qū)域?qū)傩缘囊恢滦詼y度
- 算法步驟:
- (1)對任一區(qū)域Ri,如果P(Ri)=FALSE, 就將其分裂成不重疊的四等分
- (2)對相鄰的兩個區(qū)域Ri和Rj(它們可以大小不同,即不在同一層),如果條件P(Ri∪Rj)=TRUE,就將它們合并
- (3)如果進一步的分裂或合并都不可能,則結(jié)束
[vals, r, c] = qtgetblk(I, S, dim)
[vals, idx] = qtgetblk(I, S, dim)
vals:四叉樹分解中尺寸為dim*dim大小的塊的值;
r,c為塊的左上角的行列坐標;
S:為qtdecomp返回的稀疏矩陣;
I:輸入圖像。
- 分水嶺分割算法:
- 基于距離的分水嶺分割算法:會計算二值圖像距離圖像
- 二值圖像的距離變換:每一個像素到最近非零像素的距離。
- 值為1的像素距離變換為0。
clear; close all; clc;
I = imread('Fig1022(a)(gel-image).tif');
subplot(231);imshow (I,[]);title('original image');
th = graythresh (I);
bw = im2bw(I,th);
subplot(232);imshow(bw,[]);title('bw image');
subplot(233);imshow(~bw,[]);title('negative of bw image');
d = bwdist(bw);
subplot(234);imshow (d,[]);title('bw distance image');
L = watershed (-d);
w = L==0;
subplot(235);imshow (w,[]);title('water shed lines');
final = I; final(w)=255;
subplot(236);imshow (final,[]);title('superpose image');
- 局域圖像梯度的分水嶺分割算法:掌握梯度圖像平滑的方法:開運算和閉運算。
- 梯度幅度圖像在沿對象邊緣處有較高的值,而在其它地方值較小。
理想情況下,在沿對象邊緣處產(chǎn)生分水嶺。
clear;close all; clc;
I = imread('Fig1022(a)(gel-image).tif');
subplot(231);imshow (I,[]);title('original image');
th = graythresh (I);
bw = im2bw(I,th);
subplot(232);imshow(bw,[]);title('bw image');
subplot(233);imshow(~bw,[]);title('negative of bw image');
h= fspecial ('sobel');
f= double (I);
fx = imfilter (f,h);
fy = imfilter (f,h');
fm = hypot (fx,fy);
subplot(234);imshow (fm,[]);title('gradient image');
L = watershed (fm);
w = L==0;
subplot(235);imshow (w,[]);title('water shed lines');
final = f; final(w)=255;
subplot(236);imshow (final,[]);title('superpose image');
- 基于圖像標記的分水嶺分割算法
- 上述方法通常會由于噪聲和其它諸如梯度的局部不規(guī)則性的影響造成過度分割。而過度分割足以令結(jié)果變得毫無用處。
- 解決方法:通過一系列的預處理步驟,加入附加知識,限制允許存在的區(qū)域數(shù)目。
- 標記符屬于圖像的連通分量。內(nèi)部標記符標記感興趣對象的內(nèi)部;外部標記符標記背景區(qū)域。
clear;close all; clc;
I = imread('Fig1022(a)(gel-image).tif');
subplot(231);imshow (I,[]);title('original image');
th = graythresh (I);
bw = im2bw(I,th);
h= fspecial ('sobel');
f= double (I);
fx = imfilter (f,h);
fy = imfilter (f,h');
fm = hypot (fx,fy);
subplot(232);imshow (fm,[]);title('gradient image');
rm = imregionalmin (fm);
subplot(233);imshow (rm,[]);
title('localmin of gradient image');
im = imextendedmin (f,2);
fim = f;
fim(im)=175;
subplot(234);imshow (fim,[]);title('inner marker image');
Lim = watershed(bwdist(im));
w = Lim==0;
g = imimposemin(fm,im|w);
L = watershed(g);
w2 = L==0
subplot(235);imshow (w2,[]);title('water shed lines');
final = f; final(w2)=255;
subplot(236);imshow (final,[]);title('superpose image');
七、彩色圖像處理
- Matlab中彩色圖像的表示方法
- 二值圖像(Binary images)
- 灰度圖像(Intensity images)
- RGB圖像(RGB images)
- 索引圖像(Indexed images)
- 在MATLAB中一幅彩色圖像要么被當作RGB圖像,要么被當作索引圖像進行處理。
- 灰度圖像轉(zhuǎn)成彩色圖像的方法及實現(xiàn)
- 這一方法的基本概念是對任何輸入像素的灰度級執(zhí)行三個獨立的變換。然后,三個變換結(jié)果分別送入彩色電視監(jiān)視器的紅、綠、藍通道。這種方法產(chǎn)生一幅合成圖像,其彩色內(nèi)容受變換函數(shù)特性調(diào)制。
- 偽彩色(pseudocoloring,也稱為假彩色)處理
- 定義:指將灰度圖像轉(zhuǎn)化為彩色圖像,或者將單色圖像變換成給定彩色分布的圖像。
- 基本原理:將灰度圖像或者單色圖像的各個灰度級匹配到彩色空間中的一點,從而使單色圖像映射成彩色圖像。
- 強度分層技術(shù)是偽彩色圖像處理最簡單的例子之一。
I=imread('i_peppers_gray.bmp');
GS8=grayslice(I,8);
GS64=grayslice(I,64);
subplot(1,3,1), imshow(I), title('原始灰度圖像');
subplot(1,3,2), subimage(GS8,hot(8)), title('分成8層偽彩色');
subplot(1,3,3), subimage(GS64,hot(64)), title('分成64層偽彩色');
- 彩色圖像的處理方法
- 針對每個通道進行處理
- 把一個像素點的灰度看成一個向量處理
- 彩色圖像的分割方法實現(xiàn)
圖像分割是把圖像分成各具特性的區(qū)域并提取出感興趣目標的技術(shù)和過程。
- 基于RGB色彩空間
- 假設目標是在RGB圖像中分割特殊彩色區(qū)域的物體,給定一個感興趣彩色的有代表性的彩色點樣品集,可得到一個彩色“平均”估計,這種彩色是我們希望分割的彩色。
- 對一幅RGB彩色圖像,選擇要分割的區(qū)域,計算該區(qū)域中的彩色點的平均向量a。
- 盒子的中點在a,它的尺度沿每一個RGB軸以沿相應軸的數(shù)據(jù)標準差的1.25倍選擇。
- 例如,令?R代表樣點紅分量的標準偏差,aR代表平均向量a的紅分量:
- (aR-1.25(theta)R,aR+1.25(theta)R),
- 這里在整個彩色圖像中編碼每一點的結(jié)果為:如果點位于盒子表面或內(nèi)部為白色,否則為黑色。
rgb=imread('flower608.jpg');
rgb1=im2double(rgb);
r=rgb1(:,:,1);
g=rgb1(:,:,2);
b=rgb1(:,:,3);
r1=r(129:256,86:170);
r1_u=mean(mean(r1(:)));
[m,n]=size(r1);
sd1=0.0;
for i=1:mfor j=1:n
sd1=sd1+(r1(i,j)-r1_u)*(r1(i,j)-r1_u);
end
end
r1_d=sqrt(sd1/(m*n));
r2=zeros(size(rgb1,1),size(rgb1,2));
ind=find((r>r1_u-1.25*r1_d)&(r
r2(ind)=1;
result = cat(3,r2,g,b);
Imshow(result,[])
- 基于HSI色彩空間
- HSI模型(HSI Model)是面向顏色處理的,用色調(diào)(Hue)、飽和度(Saturation) 、亮度(Intensity)來描述顏色。
- 用色調(diào)和飽和度描述色彩,用亮度描述光的強度。
- 這個模型有二個特點:
- (1)I分量與圖像的彩色信息無關(guān);
- (2)H和S分量與人感受顏色的方式是緊密相連的。
- 這些特點使得HSI模型非常適合于借助人的視覺系統(tǒng)來感知彩色特性的圖像處理算法。
S1=(S>0.3*(max(max(S))));
F=S1.*H;
日記本
5
總結(jié)
以上是生活随笔為你收集整理的matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 连续三个跌停板怎么办?
- 下一篇: matlabif语句怎么用_公益心 码