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) 알고리즘 적용(단일 채널 이미지에만 적용 가능) |
출력 결과
공유하기
![](http://developers.kakao.com/assets/img/about/logos/kakaolink/kakaolink_btn_medium.png)
![](/assets/images/naver.png)
댓글 남기기