使用不同的膨脹和腐蝕方法對圖像進行處理

膨脹是將與物體接觸的所有背景點合併到該物體中,使邊界向外部擴張的過程。通過膨脹,可以填充圖像中的小孔及在圖像邊緣處的小凹陷部分。結構元素B對圖像A進行膨脹,記作A  B

腐蝕和膨脹是對偶操作。腐蝕是一種消除邊界點,使邊界向內部收縮的過程。利用腐蝕操作,可以消除小且無意義的物體。集合A被結構元素B腐蝕,記作A\ThetaB

這裏爲了簡化起見,被膨脹和腐蝕圖像我們處理成二值圖像:

matlab 中

膨脹函數 IM2 = imdilate(IM,SE)   對圖像IM進行膨脹,採用的結構元素爲SE,SE爲函數strel()得到的結構元素

腐蝕函數 IM2 = imerode(IM,SE)  對圖像IM進行腐蝕,其他同上

以膨脹爲例代碼如下:

close all;clear all;clc;
I = imread('ceshi1.jpg');
I = im2bw(I);
I = ~I;
se1 = strel('square',3);  %方形膨脹元素
se2 = strel('line',5,90);   %線性膨脹元素
%se3 = strel('ball',5,10);   %球形膨脹元素  不能用於二值圖像
se4 = strel('disk',11);     %磁盤膨脹元素
se5 = strel('rectangle',[20 30]);  %矩形膨脹元素
A = imdilate(I,se1);
B = imdilate(I,se2);
%C = imdilate(I,se3);
D = imdilate(I,se4);
E = imdilate(I,se5);
figure;
subplot(231);imshow(I);title('origin');
subplot(232);imshow(A);title('square');
subplot(233);imshow(B);title('line');
%subplot(234);imshow(C);title('ball');
subplot(235);imshow(D);title('disk');
subplot(236);imshow(E);title('rectangle');

strel結構元素說明:

 Examples
    --------
        se1 = strel('square',11)      % 11-by-11 square
        se2 = strel('line',10,45)     % line, length 10, angle 45 degrees
        se3 = strel('disk',15)        % disk, radius 15
        se4 = strel('ball',15,5)      % ball, radius 15, height 5

注意:這裏球形結構元素不能用於膨脹操作,腐蝕操作類似,只需要修改imdilate函數爲imerode函數

程序執行後輸出如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章