形态学操作——击中击不中变换
生活随笔
收集整理的這篇文章主要介紹了
形态学操作——击中击不中变换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
操作目的
HitMiss變換是形態檢測的一個工具,通過定義形狀模板可以在圖像中獲取同一形狀物體的位置坐標。
算法講解
1、用擊中結構去腐蝕原始圖像得到擊中結果X(這個過程可以理解為在原始圖像中尋找和擊中結構完全匹配的模塊,匹配上了之后,保留匹配部分的中心元素,作為腐蝕結果的一個元素)。
2、用擊不中結構去腐蝕原始圖像的補集得到擊不中結果Y(即在原始圖像上找到擊不中結構與原始圖像沒有交集的位置,這個位置的元素保留,作為腐蝕結果的一個元素)。
3、取X和Y的交集就是擊中-擊不中的結果。
通俗理解就是:用一個小的結構元素(擊中結構)去射擊原始圖像,擊中的元素保留;再用一個很大的結構元素(擊不中,一般取一個環狀結構)去射擊原始圖像,擊不中原始圖像的位置保留。滿足擊中元素能擊中and擊不中元素不能擊中的位置的元素就是最終的形狀結果。
舉例說明
公式進一步推廣:
實現代碼
*--------------------------【練習形態學操作】-------------------------------------*/ //===========================HitMiss變換======================== //輸入:待處理圖像的灰度圖 //參數:變換模板D和W //輸出:模板位置的坐標圖 void My_HitMissChange(Mat& srcImage, Mat& dstImage, Mat& D,Mat &W_SUB_D) {Mat binaryMat, binaryMat_inv;Mat pic1, pic2;//第一步(將原圖二值化并獲取補圖像)byte thre = My.My_Ostu(&srcImage);threshold(srcImage,binaryMat,thre, 255, 0); //原圖二值圖threshold(srcImage, binaryMat_inv, thre, 255, 1);//二值圖的補//用D對A腐蝕morphologyEx(binaryMat,pic1,MORPH_ERODE,D);//用(W-D)對A(補)腐蝕morphologyEx(binaryMat_inv, pic2, MORPH_ERODE, W_SUB_D);//取pic1與pic2的交集dstImage = pic1 & pic2; }根據需要自己定制矩陣D核矩陣W-D。
知識拓展:
opencv庫函數調用方法:
morphologyEx(input_image, output_image, MORPH_HITMISS, kernel);總結
以上是生活随笔為你收集整理的形态学操作——击中击不中变换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蔚来es8多少钱啊?
- 下一篇: 《蜀四贤咏》第十二句是什么