이미지 이진화(binary)_threshold(), 적응적 이진화adaptiveThreshold()

OpenCV/이미지 처리 2013. 5. 21. 00:08

이미지 이진화

#include <iostream>

#include <opencv2/core/core.hpp>

#include <opencv2/imgproc/imgproc.hpp>

#include <opencv2/highgui/highgui.hpp>

using namespace cv;


int main()

{

Mat gray_img = imread("lena.tif", 0);

if (!gray_img.data) return -1; 


// 고정 임계 값 처리

Mat bin_img, bininv_img, trunc_img, tozero_img, tozeroinv_img;

// 입력 이미지 출력 이미지, 임계 값, maxVal, 임계 값 처리 방법

threshold(gray_img, bin_img, 0, 255, THRESH_BINARY | THRESH_OTSU);

threshold(gray_img, bininv_img, 0, 255, THRESH_BINARY_INV | THRESH_OTSU);

threshold(gray_img, trunc_img, 0, 255, THRESH_TRUNC | THRESH_OTSU);

threshold(gray_img, tozero_img, 0, 255, THRESH_TOZERO | THRESH_OTSU);

threshold(gray_img, tozeroinv_img, 0, 255, THRESH_TOZERO_INV | THRESH_OTSU);


// 적응적인 임계 값 처리

Mat adaptive_img;

// 입력 이미지 출력 이미지 maxVal, 임계 값 결정 방법, 임계 값 처리 방법, blockSize, C

adaptiveThreshold (gray_img, adaptive_img, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 7, 8);


// 결과 이​​미지보기

namedWindow("Binary",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);

namedWindow("Binary Inv",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);

namedWindow("Trunc",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);

namedWindow("ToZero",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);

namedWindow("ToZero Inv",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);

namedWindow("Adaptive",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);

imshow("Binary",bin_img);

imshow("Binary Inv",bininv_img);

imshow("Trunc",trunc_img);

imshow("ToZero",tozero_img);

imshow("ToZero Inv",tozeroinv_img);

imshow("Adaptive",adaptive_img);


waitKey(0);

return 0;

}


반응형

'OpenCV > 이미지 처리' 카테고리의 다른 글

컬러 감축  (0) 2013.09.02
이미지 반전  (0) 2013.05.21
이미지 뒤집기_flip()  (0) 2013.05.21
이미지 크기 조정_resize()  (0) 2013.05.20
컬러공간 변환_cvtColor()  (0) 2013.05.20