W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在本教程中,您將學(xué)習(xí)如何使用Hit-or-Miss變換(也稱為Hit-and-Miss變換)來查找二進制圖像中的給定配置或模式。這種變換也是更先進的形態(tài)學(xué)操作如稀釋或修剪的基礎(chǔ)。
我們將使用OpenCV函數(shù)cv :: morphologyEx。
形態(tài)運算符根據(jù)其形狀來處理圖像。這些操作者將一個或多個結(jié)構(gòu)元素應(yīng)用于輸入圖像以獲得輸出圖像。兩種基本形態(tài)作用是侵蝕和擴張。這兩個操作的組合產(chǎn)生了先進的形態(tài)變換,如打開,關(guān)閉或頂帽變換。要了解更多關(guān)于這些和其他基本形態(tài)操作,請參閱此處和此處的以前的教程。
Hit-or-Miss轉(zhuǎn)換對于查找二進制圖像中的圖案非常有用。特別地,它找到其鄰域與第一結(jié)構(gòu)元素的形狀匹配的那些像素,同時不匹配第二結(jié)構(gòu)元素B_2的形狀。在數(shù)學(xué)上,應(yīng)用于圖像A的操作可以表示如下:B1B2A
因此,命中或錯過操作包括三個步驟:
結(jié)構(gòu)元素和B_2可以組合成一個單一的元件乙。我們來看一個例子:B1B2B
結(jié)構(gòu)元素(內(nèi)核)。左:內(nèi)核到'打'。中間:內(nèi)核到'miss'。右:最終組合內(nèi)核
在這種情況下,我們正在尋找中心像素屬于背景的圖案,而北,南,東,西像素屬于前景。鄰里的其他像素可以是任何形式,我們不關(guān)心它們?,F(xiàn)在我們把這個內(nèi)核應(yīng)用到輸入圖像中:
輸入二進制圖像
輸出二進制圖像
您可以看到該圖案僅在圖像中的一個位置中找到。
與前面的例子相對應(yīng)的代碼如下所示。您也可以從這里下載
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
int main(){
Mat input_image = (Mat_<uchar>(8, 8) <<
0, 0, 0, 0, 0, 0, 0, 0,
0, 255, 255, 255, 0, 0, 0, 255,
0, 255, 255, 255, 0, 0, 0, 0,
0, 255, 255, 255, 0, 255, 0, 0,
0, 0, 255, 0, 0, 0, 0, 0,
0, 0, 255, 0, 0, 255, 255, 0,
0, 255, 0, 255, 0, 0, 255, 0,
0, 255, 255, 255, 0, 0, 0, 0);
Mat kernel = (Mat_<int>(3, 3) <<
0, 1, 0,
1, -1, 1,
0, 1, 0);
Mat output_image;
morphologyEx(input_image, output_image, MORPH_HITMISS, kernel);
const int rate = 10;
kernel = (kernel + 1) * 127;
kernel.convertTo(kernel, CV_8U);
resize(kernel, kernel, Size(), rate, rate, INTER_NEAREST);
imshow("kernel", kernel);
resize(input_image, input_image, Size(), rate, rate, INTER_NEAREST);
imshow("Original", input_image);
resize(output_image, output_image, Size(), rate, rate, INTER_NEAREST);
imshow("Hit or Miss", output_image);
waitKey(0);
return 0;
}
可以看到,它與使用函數(shù)cv :: morphologyEx一樣簡單,操作類型為cv :: MORPH_HITMISS和所選內(nèi)核。
在這里,您可以找到將不同內(nèi)核應(yīng)用于之前使用的相同輸入圖像的輸出結(jié)果:
查找右上角的內(nèi)核和輸出結(jié)果
找到左端點的內(nèi)核和輸出結(jié)果
現(xiàn)在嘗試你自己的模式!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: