OpenCV探索之路(四):膨脹、腐蝕、開閉運算


腐蝕和膨脹是最基本的形態學運算。

腐蝕和膨脹是針對白色部分(高亮部分)而言的。

膨脹就是對圖像高亮部分進行“領域擴張”,效果圖擁有比原圖更大的高亮區域;腐蝕是原圖中的高亮區域被蠶食,效果圖擁有比原圖更小的高亮區域。

膨脹

膨脹就是求局部最大值的操作,從圖像直觀看來,就是將圖像光亮部分放大,黑暗部分縮小。

#include<opencv2\opencv.hpp>   
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;

//膨脹
int main()
{
	Mat img = imread("lol1.jpg");
	namedWindow("原始圖", WINDOW_NORMAL);
	imshow("原始圖", img);
	Mat out;
	//獲取自定義核
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一個參數MORPH_RECT表示矩形的卷積核,當然還可以選擇橢圓形的、交叉型的
	//膨脹操作
	dilate(img, out, element);
	namedWindow("膨脹操作", WINDOW_NORMAL);
	imshow("膨脹操作", out);
	waitKey(0);

}

可以看到,圖像原來光亮的部分被放大了,黑暗的部分被縮小了。

腐蝕

#include<opencv2\opencv.hpp>   
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;

//腐蝕
int main()
{
	Mat img = imread("lol1.jpg");
	namedWindow("原始圖", WINDOW_NORMAL);
	imshow("原始圖", img);
	Mat out;
	//獲取自定義核
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一個參數MORPH_RECT表示矩形的卷積核,當然還可以選擇橢圓形的、交叉型的
	//腐蝕操作
	erode(img, out, element);
	namedWindow("腐蝕操作", WINDOW_NORMAL);
	imshow("腐蝕操作", out);
	waitKey(0);

}

可以看到,圖像原來黑暗的部分被放大了,明亮的部分被縮小了。

開運算:先腐蝕再膨脹,用來消除小物體

閉運算:先膨脹再腐蝕,用於排除小型黑洞

形態學梯度:就是膨脹圖與俯視圖之差,用於保留物體的邊緣輪廓。

頂帽:原圖像與開運算圖之差,用於分離比鄰近點亮一些的斑塊。

黑帽:閉運算與原圖像之差,用於分離比鄰近點暗一些的斑塊。

opencv里有一個很好的函數getStructuringElement,我們只要往這個函數傳相應的處理參數,就可以進行相應的操作了,使用起來非常方便。

下面列舉一下相應的操作宏定義。

#include<opencv2\opencv.hpp>   
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;

//高級形態學處理
int main()
{
	Mat img = imread("lol1.jpg");
	namedWindow("原始圖", WINDOW_NORMAL);
	imshow("原始圖", img);
	Mat out;
	//獲取自定義核
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一個參數MORPH_RECT表示矩形的卷積核,當然還可以選擇橢圓形的、交叉型的
		
	//高級形態學處理,調用這個函數就可以了,具體要選擇哪種操作,就修改第三個參數就可以了。這里演示的是形態學梯度處理
	morphologyEx(img, out, MORPH_GRADIENT, element);
	namedWindow("形態學處理操作", WINDOW_NORMAL);
	imshow("形態學處理操作", out);
	waitKey(0);

}

形態學梯度處理

這個是頂帽運算的效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM