Image sharpening
Peponi │ 4/21/2025 │ 4m
C#
NugetPackageOpenCvSharp4
Image sharpening
4/21/2025
4m
Peponi
C#
NugetPackageOpenCvSharp4
1. Introduction
이미지 프로세싱에서 샤프닝은 이미지의 세부 사항을 강조할 때 사용할 수 있는 기법이다. 일반적으로 필터링 기법을 응용하여 수행되며, 엣지가 강조되어 객체 인식 성능을 크게 향상시킬 수 있다. 형상 기반의 인식 알고리즘에서 자주 사용되는데, 샤프닝이 과도한 경우 노이즈까지 강조될 수 있어 주의가 필요하다.
이 문서에서는 OpenCVSharp4에서 제공하는 메서드를 통해 샤프닝을 수행하는 방법을 알아본다.
실습에 사용할 이미지는 다음과 같다.

2. Filter2D
Mat.Filter2D()
는 커널을 설정 후 이미지에 대해 correlation 연산을 수행한다. 블러링, 샤프닝 등에 활용할 수 있으며 여기서는 샤프닝을 수행하는 예시를 알아본다.
private void Filter2D(Mat image)
{
// 아래 커널에 지정할 공간 크기만큼 배열 할당
// 블러 또는 샤프닝 효과를 얻는데 사용 가능하며 커널 설정에 따라 평균값, 가우시안 등이 적용된다.
// 중앙 픽셀 값을 강조하여 샤프닝 효과를 얻는 예시
float[] weight = [ 0, -1, 0,
-1, 5, -1,
0, -1, 0 ];
using var kernel = Mat.FromPixelData(3, 3, MatType.CV_32FC1, weight);
using var sharpened = image.Filter2D(-1, kernel);
}
3. Unsharp mask filter
Unsharp mask filter는 블러 처리된 이미지를 이용하여 샤프닝을 달성하는 방법이다. 주로 gaussian blur 처리를 수행하며, 원본 이미지에서 gaussian 이미지를 빼주어 최종 이미지를 생성한다.
private void UnsharpMaskFilter(Mat image)
{
// 이미지 샤프닝을 위한 gaussian 생성
using var gaussian = image.GaussianBlur(new OpenCvSharp.Size(9, 9), 0);
using var sharpened = new Mat();
// 가중치 설정을 통해 gaussian 반영 정도 조절
Cv2.AddWeighted(image, 2, gaussian, -1, 0, sharpened);
}
4. Laplacian filter
이미지 샤프닝을 위한 방법 중 하나로 Laplacian filter를 이용할 수 있다. Laplacian filter는 이미지의 이차 미분을 계산함으로써 엣지를 강조하게 되는데, 이 결과와 원본 이미지와의 합성을 통해 이미지 샤프닝을 달성할 수 있다.
private void LaplacianFilter(Mat image)
{
// 이미지 샤프닝을 위한 laplacian 생성
using var laplacian = image.Laplacian(-1, 3);
using var sharpened = new Mat();
// 가중치 설정을 통해 laplacian 반영 정도 조절
Cv2.AddWeighted(image, 1, laplacian, -1, 0, sharpened);
}