1. 程式人生 > >擊中擊不中的變換

擊中擊不中的變換

1.1 擊中擊不中的步驟

擊中擊不中變換是形態學形狀檢測的基本工具。

步驟為:

  1. 使用模板s1腐蝕原影象X
  2. 使用模板s2(s2為是s1的補)對Y(Y為X的補)進行腐蝕
  3. 對兩個結果進行取交集

用擊中結構去腐蝕原始影象得到擊中結果X(這個過程可以理解為在原始影象中尋找和擊中結構完全匹配的模組,匹配上了之後,保留匹配部分的中心元素,作為腐蝕結果的一個元素),然後用擊不中結構去腐蝕原始影象的補集得到擊不中結果Y(即在原始影象上找到擊不中結構與原始影象沒有交集的位置,這個位置的元素保留,作為腐蝕結果的一個元素),取X和Y的交集就是擊中-擊不中的結果。 通俗理解就是:用一個小的結構元素(擊中結構)去射擊原始影象,擊中的元素保留;再用一個很大的結構元素(擊不中,一般取一個環狀結構)去射擊原始影象,擊不中原始影象的位置保留。滿足擊中元素能擊中and擊不中元素不能擊中的位置的元素就是最終的形狀結果。

1.2 擊中擊不中opencv實現

#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
int main() {
	Mat input_image = imread("lena.jpg", 2);

	imshow("Hit or Miss原圖", input_image);
	Mat kernel1 = (Mat_<int>(3, 3) <<
		0, 1, 0,
		1, -1, 1,
		0, 1, 0);
	Mat kernel2 = (Mat_<int>(3, 3) <<
		0, 1, 0,
		1, 0, 1,
		0, 1, 0);
	Mat kernel3 = (Mat_<int>(3, 3) <<
		0, 0, 0,
		0, 1, 0,
		0, 0, 0);
	Mat output_image, output_image1,output_image2,output_image3,output_image4;
	Mat element = getStructuringElement(0, Size(3, 3), Point(-1, -1));
	erode(input_image, output_image3, element);
	imshow("腐蝕圖", output_image3);
	morphologyEx(input_image, output_image1, MORPH_HITMISS, kernel3);
	morphologyEx(input_image, output_image2, MORPH_HITMISS, kernel2);
	morphologyEx(input_image, output_image, MORPH_HITMISS, kernel1);
	imshow("Hit or Miss0", output_image1);
	imshow("Hit or Miss1", output_image2);
	imshow("Hit or Miss", output_image);
	cv::absdiff(output_image1, output_image2, output_image4);
	cv::imshow("Hit or Miss2", output_image4);
	waitKey(0);
	return 0;
}

 

Mat s1 = (Mat_<int>(3, 3) <<

        0, 0, 0,

        0, 1, 0,

        0, 0, 0);

Mat s2 = (Mat_<int>(3, 3) <<

        0, 1,

0,

        1, 0, 1,

        0, 1, 0);

Mat s3 = (Mat_<int>(3, 3) <<

        0, 1, 0,

        1, -1, 1,

        0, 1, 0);

s3是直接用s2-s1所得

1.3 擊中擊不中效果

                        圖1 原圖                                              圖2 使用s1腐蝕結果                                  圖3 使用s2腐蝕結果

   圖4   圖3與圖2的交集                              圖5 直接使用s3腐蝕的結果

參考:https://blog.csdn.net/horseinch/article/details/50127955