生活随笔
收集整理的這篇文章主要介紹了
数字图像处理实验八--图像分割
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數字圖像處理實驗八
(圖像分割)
實驗內容:
采用sobel、prewitt、roberts和log對圖像及其加上噪聲后的圖像進行邊緣檢測。采用迭代式閾值選擇法和最大類間方差閾值選擇法進行圖像分割。
實驗步驟:
以chair.jpg圖像為例,分別采用sobel、prewitt、roberts和log對該圖像及其加上噪聲后的圖像進行邊緣檢測。
I1
=imread('chair.jpg');
figure
;
subplot(3,4,1);
imshow(I1
);
xlabel("原始圖像")%顯示原圖像
I2
=imnoise(I1
, 'gaussian',0,0.01);%對灰度圖像加入均值為
0,方差為
0.01的高斯噪聲
subplot(3,4,2);
imshow(I2
),xlabel('加高斯噪聲后的圖像')%顯示加噪聲后的圖像BW1
=edge(I1
,'roberts');%用Roberts算子檢測邊緣
subplot(3,4,3);
imshow(BW1
),xlabel('roberts邊緣檢測')
BW2
=edge(I1
,'prewitt');%用Prewitt算子檢測邊緣
subplot(3,4,4);
imshow(BW2
),xlabel('prewitt邊緣檢測')
BW3
=edge(I1
,'sobel');%用Sobel算子檢測邊緣
subplot(3,4,5);
imshow(BW3
),xlabel('sobel邊緣檢測')
BW4
=edge(I1
,'log');%用LOG算子檢測邊緣
subplot(3,4,6);
imshow(BW4
),xlabel('log邊緣檢測')BW5
=edge(I2
,'roberts');%用Roberts算子檢測邊緣
subplot(3,4,7);
imshow(BW5
),xlabel('roberts邊緣檢測(加噪聲)')
BW6
=edge(I2
,'prewitt');%用Prewitt算子檢測邊緣
subplot(3,4,9);
imshow(BW6
),xlabel('prewitt邊緣檢測(加噪聲)')
BW7
=edge(I2
,'sobel');%用Sobel算子檢測邊緣
subplot(3,4,12);
imshow(BW7
),xlabel('sobel邊緣檢測(加噪聲)')
BW8
=edge(I2
,'log');%用LOG算子檢測邊緣
subplot(3,4,8);
imshow(BW8
),xlabel('log邊緣檢測(加噪聲)')
效果圖:
以cell.jpg圖像為例,分別迭代式閾值選擇法和最大類間方差閾值選擇法對該圖像進行分割。
I
= imread("cell.jpg");
[width
,height
] = size(I
); %獲取圖像的高度和寬度
figure();
subplot(2,3,1),imshow(I
);
xlabel("顯示原始圖像")subplot(2,3,4),imhist(I
); %顯示原始圖像的直方圖
title("原圖直方圖");T2
= graythresh(I
); %用最大類間方差(Otsu)選擇閾值
BW2
= im2bw(I
,T2
); %Otsu閾值對圖像進行分割
subplot(2,3,2),imshow(BW2
);
xlabel('Otsu閾值圖像分割')f
= double(I
); %迭代法求出來閾值
T
= (min(f(:))+max(f(:)))/2;
done
= false
i
= 0;
while ~doner1
= find(f
<=T
);r2
= find(f
>T
);Tnew
= (mean(f(r1
))+mean(f(r2
)))/2done
= abs(Tnew
-T
)<1T
= Tnew
;i
= i
+1;
end
f(r1
) = 0;
f(r2
) = 1;%迭代法得到的閾值對圖像進行分割
subplot(2,3,3),imshow(f
);
xlabel('迭代法閾值圖像分割');
效果圖:
問題討論:
?Roberts 算子可以得到非常細的邊緣,最大的優點是計算量小速度快,適用于邊緣明顯且噪聲較少的圖像分割。Prewitt 算子和 Sobel 算子檢測出的結果類似,LOG 算子檢測出的邊緣比較連貫。
總結
以上是生活随笔為你收集整理的数字图像处理实验八--图像分割的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。