이진 이미지는 흑백의 두 가지 색상을 나타내는 디지털 이미지입니다. 이미지 처리 관점에서 이진 이미지는 0과 1의 두 가지 가능한 값을 가진 픽셀을 포함합니다. 픽셀 값이 0이면 순수한 검정색을 나타냅니다. 픽셀 값이 1일 때 순수한 흰색을 의미합니다.
회색조 이미지에는 각각에 대해 256개의 다른 가능한 값이 있습니다. 그러나 Binary Image에서는 두 가지 값만 사용할 수 있습니다. 바이너리 이미지에는 다양한 유형의 애플리케이션이 있습니다. 예를 들어 형태 변환에는 이진 이미지가 필요하고 배경에서 객체 모양 추출에는 이진 이미지가 필요합니다. OpenCV를 사용하여 이미지를 이진 이미지로 자유롭게 변환할 수 있습니다.
다음 예제는 'original_image' 행렬에 로드된 이미지를 회색조 이미지로 변환하여 'grayscale_image' 행렬에 저장하는 예제입니다-
cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);
다음 줄은 회색조 이미지를 바이너리 이미지로 변환하고 변환된 이미지를 'binary_image' 행렬에 저장하는 것입니다.
threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);
여기서 'grayscale_image'는 소스 행렬이고 'binary_image'는 대상 행렬입니다. 그 후 100과 255의 두 값이 있습니다. 이 두 값은 임계값 범위를 나타냅니다. 이 줄에서 임계값 범위는 변환할 회색조 픽셀 값을 나타냅니다.
다음 프로그램은 이미지를 로드하고 바이너리 이미지로 변환합니다.
예시
#include<iostream> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat original_image;//declaring a matrix to load the original image// Mat grayscale_image;//declaring a matrix to store grayscale image// Mat binary_image;//declaring a matrix to store the binary image namedWindow("Original Image");//declaring window to show binary image// namedWindow("Show Binary");//declaring window to show original image// original_image = imread("teddy.jpg");//loading image into matrix// cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);//Converting BGR to Grayscale image and storing it into converted matrix// threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);//converting grayscale image stored in converted matrix into binary image// imshow("Original Image", original_image);//showing Original Image// imshow("Show Binary", binary_image);//showing Binary Image// waitKey(0); return 0; }
출력