擊中擊不中變換的作用理解
阿新 • • 發佈:2018-12-30
學習形態學變換的時候,看到擊中擊不中變換一直百思不得其解,雖然他的定義寫的很清楚明白,但是不知道具體是幹嘛用的,按照自己的理解寫了一個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('擊中擊不中變換取絕對值載取反結果');
得到的結果:
原圖是:
相對於原圖直接減去腐蝕的影象,擊中擊不中變換保留了更多的細節,邊緣也更加明顯突出。當然具體的擊中擊不中變換到底何用我還是沒有明確的答案,暫時只能這麼理解了。