《計(jì)算機(jī)視覺 形態(tài)學(xué) 邊緣檢測》由會員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)視覺 形態(tài)學(xué) 邊緣檢測(10頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、
實(shí)驗(yàn)二 形態(tài)算子
一、實(shí)驗(yàn)?zāi)康呐c要求
目的:學(xué)習(xí)常見的數(shù)學(xué)形態(tài)學(xué)運(yùn)算基本方法,了解腐蝕、膨脹、開運(yùn)算、閉運(yùn)算取得的效果,培養(yǎng)處理實(shí)際圖像的能力。
要求:上機(jī)運(yùn)行,調(diào)試通過。
二、 實(shí)驗(yàn)設(shè)備:
計(jì)算機(jī)、Matlab軟件、VC++或C語言軟件
三、實(shí)驗(yàn)內(nèi)容:
利用VC++/C或MatLab工具箱中關(guān)于數(shù)學(xué)形態(tài)學(xué)運(yùn)算的函數(shù),對二值圖像進(jìn)行膨脹、腐蝕和開運(yùn)算、閉運(yùn)算處理。
四、實(shí)驗(yàn)原理:
膨脹:
腐蝕:
開運(yùn)算:
閉運(yùn)算:
五、實(shí)驗(yàn)報(bào)告內(nèi)容
(1)描述實(shí)驗(yàn)的基本步驟,用數(shù)據(jù)和圖片給出各個步驟中取得的實(shí)驗(yàn)結(jié)果,并進(jìn)行必要的討論
2、,必須包括原始圖像及其計(jì)算/處理后的圖像。
(2)結(jié)合實(shí)驗(yàn)內(nèi)容,評價腐蝕、膨脹以及開運(yùn)算、閉運(yùn)算的效果,并說明它們各自適用條件。
%對二值圖像做腐蝕、膨脹以及開運(yùn)算和閉運(yùn)算
close all;
clc;
clear;
I=imread('C:\Documents and Settings\Owner\My Documents\MATLAB\road3.jpg');
I2=im2bw(I); %對讀入圖像做二值化處理
[m,n]=size(I2);
subplot(2,3,1),imshow(I)
title('原始圖像');
subplot(2,3,2),imsho
3、w(I2)
title('二值圖像');
s=[1 1;1 0]; %腐蝕膨脹算子
%腐蝕運(yùn)算
for i=1:m-1
for j=1:n-1
if (I2(i,j)==1)&&(I2(i+1,j)==1)&&(I2(i,j+1)==1)
I3(i,j)=1;
end
end
end
subplot(2,3,3),imshow(I3)
title('圖像腐蝕1次');
%膨脹運(yùn)算
for i=1:m-1
for j=1:n-1
if (I2(i,j)==1)
4、||(I2(i+1,j)==1)||(I2(i,j+1)==1)
I4(i,j)=1;
end
end
end
subplot(2,3,4),imshow(I4)
title('圖像膨脹1次');
%開運(yùn)算
for i=1:m-2
for j=1:n-2
if (I3(i,j)==1)||(I3(i+1,j)==1)||(I3(i,j+1)==1)
I5(i,j)=1;
end
end
end
subplot(2,3,5),imshow(I5
5、)
title('開運(yùn)算');
%閉運(yùn)算
for i=1:m-2
for j=1:n-2
if (I4(i,j)==1)&&(I4(i+1,j)==1)&&(I4(i,j+1)==1)
I6(i,j)=1;
end
end
end
subplot(2,3,6),imshow(I6)
title('閉運(yùn)算');
由上圖易知,原圖像經(jīng)1次腐蝕后,圖像中的一些不連續(xù)點(diǎn)或線被腐蝕掉;而原圖像經(jīng)1次膨脹后,圖像中的一些不連續(xù)點(diǎn)或線被連接在一起或膨脹。
原圖像經(jīng)開運(yùn)算(先腐蝕后膨脹),圖像原先那些
6、不完全連續(xù)部分,邊緣孤點(diǎn)等被去掉,主體部分得以加強(qiáng),因而圖像特征明顯,且清晰。
原圖像經(jīng)閉運(yùn)算(先膨脹后腐蝕),圖像原先那些不完全連續(xù)部分,大部分被去掉,只保留最基本特征部分,因而圖像特征被明顯削弱。
實(shí)驗(yàn)三 邊緣檢測
一、實(shí)驗(yàn)?zāi)康呐c要求
目的:熟悉采用Roberts算子、Sobel算子、Prewitt算子、Laplacian算子和LOG算子檢測數(shù)字圖像的邊緣。
要求:上機(jī)運(yùn)行,調(diào)試通過。
二、 實(shí)驗(yàn)設(shè)備:
計(jì)算機(jī)、Matlab軟件、VC++或C語言軟件
三、實(shí)驗(yàn)內(nèi)容
利用VC++/C或MatLab中關(guān)于邊緣檢測的函數(shù),分別采用Roberts算子、Sobel算子、
7、Prewitt算子、Laplacian算子和LOG算子檢測數(shù)字圖像的邊緣。
四、實(shí)驗(yàn)原理
兩個具有不同灰度值的相鄰區(qū)域之間總存在邊緣,邊緣是灰度值不連續(xù)的結(jié)果,這種不連續(xù)性通常可以利用求導(dǎo)數(shù)的方法方便地檢測到。常用的邊緣檢測算子有Roberts算子、Sobel算子、Prewitt算子、LOG算子和Laplacian算子。
Roberts算子是一種利用局部差分算子尋找邊緣的算子,其模板如圖:
Sobel算子的兩個卷積計(jì)算核如圖:
Prewitt算子的兩個卷積計(jì)算核如圖:
LOG算子=高斯濾波+拉普拉斯邊緣檢測。
Laplacian算子是二階導(dǎo)數(shù)的二維等效
8、式,卷積核如圖:
五、實(shí)驗(yàn)報(bào)告內(nèi)容
(1)描述實(shí)驗(yàn)的基本步驟,給出各個算子取得的實(shí)驗(yàn)。
(2)結(jié)合實(shí)驗(yàn)內(nèi)容,簡述各個算子的效果、特點(diǎn)和適用范圍。
ps=('C:\Documents and Settings\Owner\My Documents\MATLAB\road3.jpg'); %讀取圖像
subplot(1,3,1)
imshow(ps);
title('原圖像');
ps=rgb2gray(ps);
[m,n]=size(ps); %用Sobel微分算子進(jìn)行邊緣檢測
pa = edge(ps,'sobel');
9、
subplot(1,3,2);
imshow(pa);
title('sobel邊緣檢測得到的圖像');
ps=('C:\Documents and Settings\Owner\My Documents\MATLAB\road3.jpg'); %讀取圖像
subplot(1,3,1)
imshow(ps);
title('原圖像');
ps=rgb2gray(ps);
[m,n]=size(ps); %用Roberts微分算子進(jìn)行邊緣檢測
pa = edge(ps,'Roberts');
subplot(1,3,2);
10、imshow(pa);
title('Roberts邊緣檢測得到的圖像');
ps=('C:\Documents and Settings\Owner\My Documents\MATLAB\road3.jpg'); %讀取圖像
subplot(1,3,1)
imshow(ps);
title('原圖像');
ps=rgb2gray(ps);
[m,n]=size(ps); %用Prewitt微分算子進(jìn)行邊緣檢測
pa = edge(ps,'Prewitt');
subplot(1,3,2);
imshow(pa);
titl
11、e('Prewitt邊緣檢測得到的圖像');
ps=('C:\Documents and Settings\Owner\My Documents\MATLAB\road3.jpg '); %讀取圖像
subplot(1,3,1)
imshow(ps);
title('原圖像');
ps=rgb2gray(ps);
[m,n]=size(ps); %用Sobel微分算子進(jìn)行邊緣檢測
pa = edge(ps,'LOG');
subplot(1,3,2);
imshow(pa);
title('LOG邊緣檢測得到的圖像');
12、
實(shí)驗(yàn)四 邊緣檢測
一、實(shí)驗(yàn)?zāi)康呐c要求
目的:加深對Canny邊緣檢測的原理的理解。
要求:上機(jī)運(yùn)行,調(diào)試通過。
二、 實(shí)驗(yàn)設(shè)備:
計(jì)算機(jī)、Matlab軟件、VC++或C語言軟件
三、實(shí)驗(yàn)內(nèi)容
用Matlab語言(或C語言),編寫Canny邊緣檢測器的Matlab(或C語言)函數(shù);利用上述函數(shù),對一副圖像進(jìn)行邊緣檢測;利用Matlab自帶的Canny邊緣檢測函數(shù)對同一副圖像進(jìn)行邊緣檢測;比較上述兩個結(jié)果。
四、實(shí)驗(yàn)步驟
步1. 圖像與高斯平滑濾波器卷積:
步2. 使用一階有限差分計(jì)算偏導(dǎo)數(shù)陣列P與Q:
步3. 計(jì)算梯度幅值與方向角:
步4. 非極
13、大值抑制(NMS ) :
去掉幅值局部變化非極大的點(diǎn).
* 將梯度角離散為圓周的四個扇區(qū)之一,以便用3×3的窗口
作抑制運(yùn)算
* 方向角離散化:
* 抑制,得到新幅值圖:
步5. 閾值化
取高低兩個閾值作用于幅值圖N[i,j],得到兩個邊緣圖:高閾值和低閾值邊緣圖。連接高閾值邊緣圖,出現(xiàn)斷點(diǎn)時,在低閾值邊緣圖中的8鄰點(diǎn)域搜尋邊緣點(diǎn)。
五、實(shí)驗(yàn)報(bào)告內(nèi)容
(1)描述實(shí)驗(yàn)的基本步驟,給出實(shí)驗(yàn)程序代碼及必要說明。
ps=imread('C:\Documents and Settings\Owner\My Documents\MATLAB\road3.jpg'); %讀取圖像
subplot(1,3,1)
imshow(ps);
title('原圖像');
ps=rgb2gray(ps);
[m,n]=size(ps);
pa = edge(ps,'canny');
subplot(1,3,2);
imshow(pa);
title('canny邊緣檢測得到的圖像');
(2)結(jié)合實(shí)驗(yàn)內(nèi)容,給出實(shí)驗(yàn)結(jié)果的分析和總結(jié)。