収縮と膨張は、最も基本的な形態学的な操作です。
収縮と膨張はの白い部分(のハイライト)の目的です。
膨張はレンダリングがより元のハイライト領域よりも有しており、画像のハイライト「フィールド拡張」で実行され、腐食がビーイングが侵食アートワーク内の領域を強調表示され、元の図のハイライト領域よりも小さい効果を有します。
うねり
拡張操作は、画像光を部分的に拡大され、暗い部分が狭い直感的に画像から、極大値を求めています。
#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);
}
明暗部の見ることができる、元の画像が拡大された部分が低減されます。
オープン操作:小さなオブジェクトを除去するために、第1の再膨張をエッチング
操作を閉じる第一拡大及び腐食、小さなブラックホールを排除するため
形態学的勾配:線膨張の差は、図の平面図であり、物体のエッジプロファイルを保持します。
トップキャップ:原画像と図の開動作との間の差、プラークの数を分離するための点灯率に隣接。
ブラックハット:隣接点より単離されたプラークより暗いの数を、原画像との差分を閉じて計算します。
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);
}
形態学的勾配処理
これは、トップハット作用効果であります