C# OpenCV 강좌 : 제 12강 - 이진화

   

이진화 (Binary)


1 영상이나 이미지를 어느 지점을 기준으로 흑색 또는 흰색의 색상으로 변환하기 위해서 사용합니다.


원본(Source, src)를 영상이나 이미지를 사용하면 됩니다.

영상 사용하기 : 3강 바로가기
이미지 사용하기 : 4강 바로가기


Class


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;

namespace test
{
    class OpenCV : IDisposable
    {
        IplImage bin;
            
        public IplImage Binary(IplImage src)
        {
            bin = new IplImage(src.Size, BitDepth.U8, 1);
            Cv.CvtColor(src, bin, ColorConversion.RgbToGray);
            Cv.Threshold(bin, bin, 100, 255, ThresholdType.Binary);
            return bin;
        }
            
        public void Dispose()
        {
            if (bin != null) Cv.ReleaseImage(bin);
        }
    }
}


Class Code


public IplImage Binary(IplImage src)
{
    ...
}

Binary에서 영상을 이진화로 변하게 됩니다.

bin = new IplImage(src.Size, BitDepth.U8, 1);

bin에 메모리 확보를 위하여 선언합니다. IplImage(크기, 정밀도, 채널)을 입력합니다. 단색일 경우 채널은 1이며, 다색일 경우 채널은 3입니다.

  • Tip : 이진화는 단색이기 때문에, 채널은 1입니다.
 Cv.CvtColor(src, bin, ColorConversion.RgbToGray);

Cv.CvtColor()을 이용하여 그레이스케일로 만듭니다.


그레이스케일 알아보기 : 10강 바로가기


Cv.Threshold(bin, bin, 100, 255, ThresholdType.Binary);

Cv.Threshold()를 이용하여 임계점과 최댓값을 설정합니다. Cv.Threshold(원본, 결과, 임계값, 최댓값, 임계값종류)를 설정합니다. 원본그레이스케일bin이기 때문에 원본에 결과를 덧씌웁니다.

임계값은 100일 경우 100을 기준으로 100보다 이하면 0으로 100보다 이상이면 최댓값으로 변경합니다.

임계값종류는 이진화할 방법을 선택합니다.

  • Tip : 0흑색, 255백색을 의미합니다.


Main Code


using (OpenCV Convert = new OpenCV())
{
    pictureBoxIpl2.ImageIpl = Convert.Binary(src);
}

Binary이진화 된 이미지를 표시합니다.


Result



100, 255, ThresholdType.Binary

2

100, 255, ThresholdType.BinaryInv

8

100, 255, ThresholdType.Otsu

9

100, 255, ThresholdType.ToZero

10

100, 255, ThresholdType.ToZeroInv

11

100, 255, ThresholdType.Truncate

12

50, 255, ThresholdType.Binary

3

150, 255, ThresholdType.Binary

4

200, 255, ThresholdType.Binary

5

50, 200, ThresholdType.Binary

6

100, 200, ThresholdType.Binary

7



도움이 되셨다면 광고 클릭 부탁드립니다.

⤧  Next post C# OpenCV 강좌 : 제 13강 - 흐림 효과 ⤧  Previous post C# OpenCV 강좌 : 제 11강 - 역상