1. 程式人生 > >擊中擊不中變換的作用理解

擊中擊不中變換的作用理解

學習形態學變換的時候,看到擊中擊不中變換一直百思不得其解,雖然他的定義寫的很清楚明白,但是不知道具體是幹嘛用的,按照自己的理解寫了一個matlab小程式來試試。

1、擊中擊不中變換是形態學形狀檢測的基本工具,是用來查詢畫素區域性模式的形態學運算子。‘區域性’是指‘結構元素’的大小。

兩個不相交集合B={B1,B2},稱B為複合結構元素。則擊中擊不中變換為:

文字描述感覺更清楚:用B1去腐蝕X,然後用B2去腐蝕X的補集,得到的結果相減就是擊中擊不中變換。

2.用表格模擬擊中擊不中變換:黑色為要檢測邊緣的物體,B1B2為不相交結構元素


先用B1腐蝕黑色部分,再用B2腐蝕黑色以外的部分,得到:


淺綠色為B1腐蝕後,黑色物體所剩下的元素,深綠色為B2腐蝕後,黑色物體以外的影象所剩下的部分,黑灰為兩次腐蝕所得到的邊緣資訊。

3.自己寫的程式:

clc;
clear all;

b1=strel('disk',5);
b2=strel('disk',5);
I=imread('woman.jpg');
I=rgb2gray(I);
H=im2bw(I);
J=~H;%原圖取反
K=imerode(H,b1);%用運算元1去腐蝕原圖
L=imerode(J,b2);%用運算元2去腐蝕原圖的補集
K1=mat2gray(K);
L1=mat2gray(L);
R=mat2gray(H-K);%原圖直接減去用運算元1腐蝕的結果
M1=K-L;%擊中擊不中變換
M2=abs(K-L);%擊中擊不中變換的絕對值
R1=mat2gray(M1);
% R2=mat2gray(M2);%
R3=mat2gray(~M2);%擊中擊不中變換絕對值取反
figure(1);
subplot(231),imshow(H),title('原圖灰度圖');
subplot(232),imshow(K1);title('運算元1腐蝕結果');
subplot(233),imshow(L1),title('運算元2腐蝕結果');
subplot(234),imshow(R),title('原圖直接減去腐蝕2結果');
subplot(235),imshow(R1),title('擊中擊不中變換結果');
subplot(236),imshow(R3),title('擊中擊不中變換取絕對值載取反結果');

得到的結果:

原圖是:

相對於原圖直接減去腐蝕的影象,擊中擊不中變換保留了更多的細節,邊緣也更加明顯突出。當然具體的擊中擊不中變換到底何用我還是沒有明確的答案,暫時只能這麼理解了。