一纷跛、實驗名稱
圖像銳化
二、實驗目的
1.熟悉MATLAB軟件的使用邀杏。
2.掌握圖像銳化的原理及數(shù)學運算贫奠。
3.于MATLAB環(huán)境下編程實現(xiàn)對圖片銳化。
三望蜡、實驗內容
利用圖像基于單方向梯度算子唤崭,Robert算子,Sobel算 子脖律,Pritt算 子, Laplacian算子谢肾,多方向模板,LoG算子編寫matlab增強程序;最后小泉,顯示邊緣圖像和銳化增強圖像,并對這些仿真結果所呈現(xiàn)的邊緣提取和增強效果進行對比分析微姊。
四酸茴、實驗儀器與設備
Win10 64位電腦
MATLAB2017a
五、實驗原理
1.Sobel算子是像素圖像邊緣檢測中最重要的算子之一兢交。在技術上弊决,它是一個離散的一階差分算子,用來計算圖像亮度函數(shù)的一階梯度之近似值。在圖像的任何一點使用此算子飘诗,將會產生該點對應的梯度矢量或是其法矢量与倡。
2.Roberts邊緣檢測算子是一種利用局部差分算子尋找邊緣的算子,Robert算子圖像處理后結果邊緣不是很平滑昆稿。經分析纺座,由于Robert算子通常會在圖像邊緣附近的區(qū)域內 產生較寬的響應,故采用上述算子檢測的邊緣圖像常需做細化處理溉潭,邊緣定位的精度不是很高净响。
3.Prewitt算子是一種一階微分算子的邊緣檢測,利用像素點上下喳瓣、左右鄰點的灰度差馋贤,在邊緣處達到極值檢測邊緣,去掉部分偽邊緣畏陕,對噪聲具有平滑作用 配乓。其原理是在圖像空間利用兩個方向模板與圖像進行鄰域卷積來完成的,這兩個方向模板一個檢測水平邊緣惠毁,一個檢測垂直邊緣犹芹。
4\. Laplacian算子是n維歐幾里得空間中的一個二階微分算子,定義為梯度grad()的散度div()鞠绰。因此如果f是二階 可微的實函數(shù)腰埂,則f的laplacian算子定義為:
(1) f的拉普拉斯算子也是笛卡爾坐標系xi中的所有非混合二階偏導數(shù)求和:
(2) 作為一個二階 微分算子,拉普拉斯算子把C函數(shù)映射到C函數(shù)蜈膨,對于k ≥ 2屿笼。
六、實驗過程及代碼
Sobel算子
I=imread('a3.jpg'); %讀取圖像
I1=rgb2gray(I); %將彩色圖變成灰色圖
subplot(131),imshow(I1),title('原圖');
model=[-1,0,1;
-2,0,2;
-1,0,1];
[m,n]=size(I1);
I2=double(I1);
for i=2:m-1
for j=2:n-1
I2(i,j)=I1(i+1,j+1)+2*I1(i+1,j)+I1(i+1,j-1)-I1(i-1,j+1)-2*I1(i-1,j)-I1(i-1,j-1);
end
end
subplot(132),
imshow(I2),title('邊緣提取后的圖像');
I2 = I2 + double(I1);
subplot(133),
imshow(uint8(I2)),title('銳化后的圖像');
Robert算子
I=imread('a3.jpg'); %讀取圖像
I1=rgb2gray(I); %將彩色圖變成灰色圖
subplot(131),imshow(I1),title('原圖');
model=[0,-1;1,0];
[m,n]=size(I1);
I2=double(I1);
for i=2:m-1
for j=2:n-1
I2(i,j)=I1(i+1,j)-I1(i,j+1);
end
end
subplot(132),imshow(I2),title('邊緣提取后的圖像');
I2 = I2 + double(I1);
subplot(133),
imshow(uint8(I2)),title('銳化后的圖像');
Prewitt算子
I=imread('a3.jpg');
I1=rgb2gray(I); %將彩色圖變成灰色圖
subplot(131);
imshow(I1),title('原圖');
model=[-1,0,1;
-1,0,1;
-1,0,1];
[m,n]=size(I1);
I2=I1;
for i=2:m-1
for j=2:n-1
tem=I1(i-1:i+1,j-1:j+1);
tem=double(tem).*model;
I2(i,j)=sum(sum(tem));
end
end
subplot(132),
imshow(uint8(I2)),title('邊緣提取后的圖像');
I2=I2+I1;
subplot(133),
imshow(I2),title('圖像銳化')
laplacian算子
I=imread('a3.jpg');
I1=mat2gray(I);%實現(xiàn)圖像矩陣的歸一化操作
[m,n]=size(I1);
newGrayPic=I1;%為保留圖像的邊緣一個像素
LaplacianNum=0;%經Laplacian算子計算得到的每個像素的值
LaplacianThreshold=0.2;%設定閾值
for j=2:m-1 %進行邊界提取
for k=2:n-1
LaplacianNum=abs(4*I1(j,k)-I1(j-1,k)-I1(j+1,k)-I1(j,k+1)-I1(j,k-1));
if(LaplacianNum > LaplacianThreshold)
newGrayPic(j,k)=255;
else
newGrayPic(j,k)=0;
end
end
end
I2=rgb2gray(I); %將彩色圖變成灰色圖
subplot(131),imshow(I2),title('原圖');
subplot(132),
imshow(newGrayPic);
title('Laplacian算子的處理結果')
t=I1+newGrayPic;
subplot(133),imshow(t),title('圖像銳化后')
Log算子
t=imread('a3.jpg');
t=rgb2gray(t);
[m,n]=size(t);
subplot(1,3,1),imshow(t),title('原圖')
tt=t;
model=[0,0,1,0,0;
0,1,2,1,0;
1,2,-16,2,1;
0,0,1,0,0;
0,1,2,1,0;]
for i=3:m-2
for j=3:n-2
tem=double(t(i-2:i+2,j-2:j+2)).*model;
x=sum(sum(tem));
tt(i,j)=x;
end
end
subplot(1,3,2),imshow(tt),title('log提取邊緣后')
t_1=double(tt)+double(t);
subplot(1,3,3),imshow(uint8(t_1)),title('log銳化后')
七翁巍、實驗結果與分析
Sobel算子
Robert算子
Prewitt算子
laplacian算子
Log算子
總結
圖像銳化(image sharpening)是補償圖像的輪廓曙咽,增強圖像的邊緣及灰度跳變的部分挑辆,使圖像變得清晰例朱,分為空間域處理和頻域處理兩類鱼蝉。圖像銳化是為了突出圖像上地物的邊緣洒嗤、輪廓,或某些線性目標要素的特征魁亦。這種濾波方法提高了地物邊緣與周圍像元之間的反差渔隶,因此也被稱為邊緣增強。我的理解:圖像銳化就是通過使得圖像的邊緣更加突出,可以是原圖與原圖的高頻部分疊加而成间唉。
Sobel算法與Priwitt算法的思路相同绞灼,屬于同一類型,因此處理效果基本相同呈野。Roberts算法的模板為2*2低矮,提取信息較弱。單方向銳化經過處理之后被冒,也可以對邊界進行增強军掂。Laplacian算子對噪聲比較敏感,Laplacian算子有一個缺點是它對圖像中的某些邊緣產生雙重響應昨悼。所以圖像一般先經過平滑處理蝗锥,通常把Laplacian算子和平滑算子結合起來生成一個新的模板-Log算子。
八率触、實驗總結及心得體會
通過此次實驗终议,自己學習了圖像銳化的幾種算子。開始的時候闲延,不懂每個算子的來源痊剖,后面看了老師的推導過程后,發(fā)現(xiàn)其實銳化就是先對圖像進行差分(類似求導)垒玲,再疊加到原圖上陆馁。這里主要的問題就是對算子的差分原理的驗證,然后在MATLAB上機過程中合愈,沒有注意到數(shù)據(jù)類型的限制叮贩,導致數(shù)據(jù)上溢。