日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

腐蚀与膨胀

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 腐蚀与膨胀 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡單來講,形態學操作就是基于形狀的一系列圖像處理操作。通過將?結構元素?作用于輸入圖像來產生輸出圖像。

最基本的形態學操作有二:腐蝕與膨脹(Erosion 與 Dilation)。 他們的運用廣泛:

1、消除噪聲

2、分割(isolate)獨立的圖像元素,以及連接(join)相鄰的元素。

3、尋找圖像中的明顯的極大值區域或極小值區域。

注意:腐蝕和膨脹是對白色區域(高亮部分)而言,不是黑色部分;膨脹是圖像中高亮部分進行膨脹,效果圖擁有比原圖更大的高亮區域;腐蝕是圖像中高亮部分進行腐蝕,效果圖擁有比原圖更小的高亮區域。

膨脹

求局部最大值,并把最大值賦給參考點指定的像素,這樣會使得圖像中高亮區域逐漸增長。

進行?腐蝕?操作的函數是?dilate?。 它接受了三個參數:

src: 原圖像

?dilate?_dst: 輸出圖像

element: 腐蝕操作的內核。 如果不指定,默認為一個簡單的??矩陣。否則,我們就要明確指定它的形狀,可以使用函數?getStructuringElement:

我們可以為我們的內核選擇三種形狀之一:

  • 矩形: MORPH_RECT
  • 交叉形: MORPH_CROSS
  • 橢圓形: MORPH_ELLIPSE

然后,我們還需要指定內核大小,以及?錨點?位置。不指定錨點位置,則默認錨點在內核中心位置。

腐蝕

求局部最小值,并把最小值賦給參考點指定的像素,這樣會使得圖像中高亮區域逐漸減少。

進行?腐蝕?操作的函數是?erode?。 它接受了三個參數:

src: 原圖像

erosion_dst: 輸出圖像

element: 腐蝕操作的內核。 如果不指定,默認為一個簡單的??矩陣。否則,我們就要明確指定它的形狀,可以使用函數?getStructuringElement:

我們可以為我們的內核選擇三種形狀之一:

  • 矩形: MORPH_RECT
  • 交叉形: MORPH_CROSS
  • 橢圓形: MORPH_ELLIPSE

然后,我們還需要指定內核大小,以及?錨點?位置。不指定錨點位置,則默認錨點在內核中心位置。

程序

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<vector>
#include<time.h>
#include<opencv2/core/core.hpp>
#include <iostream>
using namespace cv;
using namespace std;
//--------------------------------------【main( )函數】-----------------------------------------
//          描述:控制臺應用程序的入口函數,我們的程序從這里開始執行
//-------------------------------------------------------------------------------------------------Mat src = imread("D:\\VC\\c++\\opencv源碼\\opencv源碼\\12.bmp");
Mat dst1 ,dst2;
int p = 3;//膨脹參數值
int f = 4;//腐蝕參數值//膨脹回調函數
void on_p(int, void*)
{Mat element = getStructuringElement(MORPH_ELLIPSE, Size(p * 2 + 1, p * 2 + 1));dilate(src, dst1, element);imshow("膨脹圖", dst1);
}//腐蝕回調函數
void on_f(int, void*)
{Mat element1 = getStructuringElement(MORPH_ELLIPSE, Size(f * 2 + 1, f * 2 + 1));erode(src, dst2,element1);imshow("腐蝕圖", dst2);
}
int main()
{double time0 = static_cast<double>(getTickCount());//記錄起始時間namedWindow("原圖", WINDOW_FREERATIO);namedWindow("膨脹圖");namedWindow("腐蝕圖");imshow("原圖", src);//膨脹createTrackbar("內核值", "膨脹圖", &p, 20, on_p);on_p(p, 0);//腐蝕createTrackbar("內核值", "腐蝕圖", &f, 20, on_f);on_f(f, 0);time0 = ((double)getTickCount() - time0) / getTickFrequency();cout << "此方法運行時間:" << time0 << "秒" << endl;//輸出運行時間waitKey(0);return 0;
}

?

?

?

總結

以上是生活随笔為你收集整理的腐蚀与膨胀的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。