개발/OpenCV

opencv 샤프닝(Sharpening)

njsung 2018. 4. 10. 00:46
반응형
#include <opencv\highgui.h>
#include <opencv2\opencv.hpp>
#include <opencv/cv.h>

using namespace cv;

int main() {
	
	Mat inputImg, resultImg;
	
	inputImg = imread("city.jpg", IMREAD_COLOR);

	CV_Assert(inputImg.depth() == CV_8U);
	resultImg.create(inputImg.size(), inputImg.type());

	const int nChannels = inputImg.channels();

	for (int j = 1; j < inputImg.rows - 1; ++j)
	{
		const uchar* prev = inputImg.ptr(j - 1);
		const uchar* curr = inputImg.ptr(j    );
		const uchar* next = inputImg.ptr(j + 1);

		uchar* output = resultImg.ptr(j);
		for (int i = nChannels; i < nChannels*(inputImg.cols - 1); ++i)
		{
			*output++ = saturate_cast(5 * curr[i] - curr[i - nChannels] - curr[i + nChannels] - prev[i] - next[i]);
		}
	}

	resultImg.row(0).setTo(Scalar(0));
	resultImg.row(resultImg.rows - 1).setTo(Scalar(0));
	resultImg.col(0).setTo(Scalar(0));
	resultImg.col(resultImg.cols - 1).setTo(Scalar(0));

	imshow("Original", inputImg);
	imshow("S", resultImg);
	cvWaitKey(0);
	return 0;
}

opencv를 이용해 이미지를 선명하게 바꾸는 샤프닝 예제입니다.


결과는 다음과 같습니다.



왼쪽 이미지에 비해 오른쪽 이미지가 조금 더 선명해진것을 확인할 수 있습니다



반응형