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

영상이나 이미지의 어느 지점을 기준으로 픽셀을 분류해 제외합니다.
특정 값을 기준으로 값이 높거나 낮은 픽셀을 검은색 또는 흰색의 값으로 변경합니다.
기준값에 따라 이분법적으로 구분해 픽셀을 참 또는 거짓으로 나누는 연산입니다.
메인 코드
using System;
using OpenCvSharp;
namespace Project
{
class Program
{
static void Main(string[] args)
{
Mat src = new Mat("rose.jpg");
Mat gray = new Mat();
Mat binary = new Mat();
Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY);
Cv2.Threshold(gray, binary, 150, 255, ThresholdTypes.Binary);
Cv2.ImShow("src", src);
Cv2.ImShow("dst", binary);
Cv2.WaitKey(0);
}
}
}세부 코드
Mat src = new Mat("rose.jpg");
Mat gray = new Mat();
Mat binary = new Mat();new Mat을 사용해 이미지를 src에 할당합니다.
gray는 src를 그레이스케일로 변화시켜, 단일 채널로 변경하기 위한 공간입니다.
binary는 이진화된 이미지가 저장될 공간입니다.
- Tip : 이진화는 단일 채널에 대해서만 적용됩니다.
src에 적용할 경우, 각 채널별로 이진화가 적용됩니다.
Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY);
Cv2.Threshold(gray, binary, 150, 255, ThresholdTypes.Binary);색상 공간 변환 함수(Cv2.CvtColor)를 활용해 색상 이미지에서 흑백 이미지로 변환합니다.
이진화를 적용할 때 가장 많이 선행으로 적용되는 변환법입니다.
이진화 함수(Cv2.Threshold)를 활용해 이미지를 이진화합니다.
Cv2.Threshold(원본 이미지, 결과 이미지, 임곗값, 최댓값, 임곗값 형식)로 이진화를 적용합니다.
임곗값 형식에 따라 이진화 방식을 설정합니다.
임곗값 보다 낮은 픽셀값은 0이나 원본 픽셀값으로 변경하며, 임곗값보다 높은 픽셀값은 최댓값으로 변경합니다.
임곗값 형식 종류
| 속성 | 의미 |
|---|---|
| ThresholdTypes.Binary | 임곗값을 초과할 경우 최댓값, 아닐 경우 0 |
| ThresholdTypes.BinaryInv | 임곗값을 초과할 경우 0, 아닐 경우 최댓값 |
| ThresholdTypes.Trunc | 임곗값을 초과할 경우 임곗값, 아닐 경우 변형 없음 |
| ThresholdTypes.Tozero | 임곗값을 초과할 경우 변형 없음, 아닐 경우 0 |
| ThresholdTypes.TozeroInv | 임곗값을 초과할 경우 0, 아닐 경우 변형 없음 |
| ThresholdTypes.Mask | 검은색 이미지로 변경(마스크용) |
| ThresholdTypes.Otsu | 오츠 알고리즘 적용(단일 채널 이미지에만 적용 가능) |
| ThresholdTypes.Triangle | 삼각형(Triangle) 알고리즘 적용(단일 채널 이미지에만 적용 가능) |
출력 결과

공유하기
Kakao
Naver
Twitter
LinkedIn
Facebook
댓글 남기기