-
네거티브 변환(Negative Transformation) 구현컴공지식/컴퓨터비전 2024. 9. 6. 00:27
Intensity Transformation 중 네거티브 변환 구현 코드를 살펴보자
다음과 같이 이미지를 불러왔다고 치자
Mat image = imread("lena.png", 0);
0을 두 번째 인자로 줬기 때문에 이미지는 그레이스케일이 된다.
그 다음은 네거티브 이미지를 위한 복사본 생성한다.
Mat negative_img = image.clone();
image.clone()을 사용해 원본 이미지와 동일한 크기와 타입을 가진 negative_img라는 새로운 이미지를 생성한다.
이제 네거티브 변환을 수행해보자
for (int j = 0; j < image.rows; j++)
for (int i = 0; i < image.cols; i++)
negative_img.at<uchar>(j, i) = 255 - image.at<uchar>(j, i);여기서 이중 for 루프를 사용해 이미지의 모든 픽셀을 순회한다.
각 픽셀에 대해 negative_img의 픽셀 값을 255 - image.at<uchar>(j, i)로 설정한다.
이 식은 밝기 값을 반전시키는 걸 의미한다.
밝기 값이 0이면 255가 되고, 255이면 0이 된다.
이렇게 하면 픽셀마다 255에서 해당 픽셀 값을 빼는 방식으로 밝기를 반전시켜서 네거티브 이미지를 만들어낸다.
네거티브 이미지는 원본과는 반대로 어두운 부분이 밝아지고 밝은 부분이 어두워진 결과를 보여준다.
'컴공지식 > 컴퓨터비전' 카테고리의 다른 글
감마 보정(Gamma Correction) 구현 (0) 2024.09.06 로그 변환(Log Transformation) 구현 (0) 2024.09.06 Pixel Access (0) 2024.09.06 Intensity Transformation (0) 2024.09.03 imread 함수 (0) 2024.08.31