除了之前寫的腐蝕、膨脹、開運算、閉運算。還有很多其它形態學計算。
1、圖像梯度
形態學梯度就是膨脹圖與腐蝕圖之差,梯度從原區域的膨脹中減去了原區域的收縮,保留了圖像的外邊緣部分,也就是圖像的輪廓。
imgPath = 'E:\opencv_pic\src_pic\pic2.bmp'; img = imread(imgPath); img=rgb2gray(img); img = 255-img; se = strel('square', 3); img2 = imerode(img, se); img3 = imdilate(img, se); subplot(1,2,1),imshow(255-img),title('原始圖像'); subplot(1,2,2),imshow(255-(img3-img2)),title('梯度圖像');
2、頂帽(Top Hat)
頂帽變換是指原始圖像減去其開運算的圖像,得到圖像的噪聲。
imgPath = 'E:\opencv_pic\src_pic\pic1.bmp'; img = imread(imgPath); img=rgb2gray(img); img = 255-img; se = strel('square', 5); img3 = imopen(img, se); subplot(1,2,1),imshow(255-img),title('原始圖像'); subplot(1,2,2),imshow(255-(img-img3)),title('頂帽運算');
使用matlab語句img3 = imtophat(img, se)效果和上面的代碼相同。
3、底帽
圖像底帽運算是圖像閉運算操作減去原始圖像的結果,得到圖像內部的小孔,或者前景色中的小黑點。
imgPath = 'E:\opencv_pic\src_pic\pic1.bmp'; img = imread(imgPath); img=rgb2gray(img); img = 255-img; se = strel('square', 5); img3 = imclose(img, se); subplot(1,3,1),imshow(255-img),title('原始圖像'); subplot(1,3,2),imshow(255-img3),title('閉運算'); subplot(1,3,3),imshow(255-(img3-img)),title('底帽運算');
使用matlab語句img3 = imbothat(img, se)效果和上面的代碼相同。
4、擊中、擊不中
擊中擊不中變換是形態學中用來檢測特定形狀所處位置的一個基本工具。
原理:
A*S =(AΘS1)∩(AcΘS2)
其中S1∩S2 = Ø, S=S1∪S2,S1是感興趣物體(要檢測物體)的集合,S2是背景部分對應的集合。結構元素S1對目標圖像進行腐蝕,背景結構元素S2對目標圖像的補集進行腐蝕。
Hit-miss算法對圖像內部和外部同時探測,結構元素S1對圖像進行匹配,結構元素S2與圖像的補集進行匹配。
5、參考文獻
1、C#數字圖像處理(十四)擊中擊不中變換 (Hit-miss)
https://www.cnblogs.com/dearzhoubi/p/8714941.html
2、Hit-and-Miss Transform
https://homepages.inf.ed.ac.uk/rbf/HIPR2/hitmiss.htm
3、Hit-or-Miss
https://docs.opencv.org/trunk/db/d06/tutorial_hitOrMiss.html
尊重原創技術文章,轉載請注明。