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)

 

결과