-
threshold 처리 코드컴공지식/컴퓨터비전 2024. 10. 2. 22:42
이렇게 생겼다
double threshold(Mat src, Mat dst, double thresh, double maxval, int type);
double thresh가 픽셀 값과 비교할 임계값이고
double maxval은 임계값을 넘는 픽셀에 할당될 값이다. 예를 들어 255 같은 값을 주면 흰색으로 변한다.
int type은 임계값 처리 방식이다. 아래와 같이 쓸 수 있다.
- THRESH_BINARY: 임계값보다 크면 maxval, 작으면 0.
- THRESH_BINARY_INV: 위와 반대로 임계값보다 작으면 maxval, 크면 0.
- THRESH_TRUNC: 임계값보다 크면 그 픽셀 값을 임계값으로, 작으면 그대로 유지.
- THRESH_TOZERO: 임계값보다 크면 그대로 두고, 작으면 0.
- THRESH_TOZERO_INV: 위와 반대로 임계값보다 작으면 0, 크면 그대로 유지.
이건 Threshold Operation(임계값 처리)의 여러 종류를 시각적으로 보여주는 그래프다.
Value and Threshold Level: 이 첫 번째 라인은 임계값을 기준으로 값이 어떻게 배분되는지 보여주는 기본적인 선
Threshold Binary: 임계값을 넘는 값은 최댓값으로, 임계값보다 작은 값은 0으로 바뀜
Threshold Binary Inverted: 이건 위의 반대
Truncate: 임계값보다 큰 값은 임계값으로 잘리고, 작은 값은 그대로 유지
Threshold to Zero, Inverted: 임계값보다 작은 값은 0으로 바뀌고, 큰 값은 그대로 유지
Threshold to Zero: 이건 반대로, 임계값보다 큰 값은 유지되고 작은 값만 0으로
다음은 코드 사용 예다.
int main() {
Mat image = imread("lena.png"); // 이미지를 불러옴
cvtColor(image, image, CV_BGR2GRAY); // 컬러 이미지를 그레이스케일로 변환
Mat dst; // 결과 이미지를 저장할 변수
threshold(image, dst, 100, 255, THRESH_BINARY); // 임계값 처리 (임계값: 100, 최댓값: 255, 이진화)
imshow("dst", dst); // 이진화된 이미지 출력
imshow("image", image); // 원본 이미지 출력
waitKey(0); // 키 입력 대기
return 0;
}threshold(image, dst, 100, 255, THRESH_BINARY)를 보면 픽셀 값이 100보다 크면 255(흰색)으로 바꾸고, 100보다 작으면 0(검은색)으로 바꾼다. THRESH_BINARY 방식이니까 완전한 흑백 이미지가 나온다.
'컴공지식 > 컴퓨터비전' 카테고리의 다른 글
inRange 함수 (0) 2024.10.02 adaptiveThreshold 함수 코드 (0) 2024.10.02 GrabCut이란? (1) 2024.10.02 적응형 임계값(Adaptive Thresholding)이란 (0) 2024.10.02 Global Thresholding이란 (1) 2024.10.02