C#/C# OpenCV/
C# OpenCV 6-5. 모폴로지 연산 - 그라이언트, 탑햇, 블랙햇
2019. 12. 5.
대표함수
Cv2.MorphologyEx 모폴로지 연산
Example Code
using System;
using System.Windows.Forms;
using OpenCvSharp;
namespace morph3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Mat src = Cv2.ImRead("image.jpg");
Mat dst = new Mat();
Cv2.ImShow("src", src);
Mat element = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(10, 10));
Cv2.MorphologyEx(src, dst, MorphTypes.Gradient, element);
Cv2.ImShow("gradient", dst);
Cv2.Subtract(src.Dilate(element), src.Erode(element), dst);
Cv2.ImShow("dilate-erode ", dst);
Cv2.MorphologyEx(src, dst, MorphTypes.TopHat, element);
Cv2.ImShow("tophat", dst);
Cv2.Subtract(src, src.MorphologyEx(MorphTypes.Open,element), dst);
Cv2.ImShow("src-open ", dst);
Cv2.MorphologyEx(src, dst, MorphTypes.BlackHat, element);
Cv2.ImShow("blackhat", dst);
Cv2.Subtract(src.MorphologyEx(MorphTypes.Close,element), src, dst);
Cv2.ImShow("close-src ", dst);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
}
}
}
Explain Code
Cv2.MorphologyEx(src, dst, MorphTypes.Gradient, element);
Cv2.Subtract(src.Dilate(element), src.Erode(element), dst);
Cv2.MorphologyEx(src, dst, MorphTypes op, element, int iteration)
src 입력
dst 출력
MorphType op 시행할 연산 *Gradient=그라디언트연산
element 구조체
iteration 반복횟수, 안적을 시 default 1
※ 그라디언트 연산
팽창연산(Dilate) - 침식연산(Erode)
Cv2.MorphologyEx(src, dst, MorphTypes.TopHat, element);
Cv2.Subtract(src, src.MorphologyEx(MorphTypes.Open,element), dst);
Cv2.MorphologyEx(src, dst, MorphTypes op, element, int iteration)
src 입력
dst 출력
MorphType op 시행할 연산 *TopHat=탑햇연산
element 구조체
iteration 반복횟수, 안적을 시 default 1
※ 탑햇 연산
원본(src) - 열기연산(Open)
Cv2.MorphologyEx(src, dst, MorphTypes.BlackHat, element);
Cv2.Subtract(src.MorphologyEx(MorphTypes.Close,element), src, dst);
Cv2.MorphologyEx(src, dst, MorphTypes op, element, int iteration)
src 입력
dst 출력
MorphType op 시행할 연산 *BlackHat=블랙햇연산
element 구조체
iteration 반복횟수, 안적을 시 default 1
※ 블랙햇 연산
닫기연산(Close) - 원본(src)
결과