본문 바로가기
카테고리 없음

# OpenCVSharp 필터링 기법 완벽 정리

by tasiklee 2025. 2. 18.

안녕하세요! 오늘은 C#과 OpenCVSharp을 이용한 다양한 필터링 기법에 대해 알아보겠습니다. OpenCVSharp은 C# 환경에서 OpenCV 기능을 사용할 수 있도록 지원하는 라이브러리로, 이미지 필터링을 비롯한 다양한 영상 처리 기능을 제공합니다.

이번 포스팅에서는 블러링(Blurring), 샤프닝(Sharpening), 엣지 검출(Edge Detection), 색상 변환(Color Conversion) 등의 필터링 기법을 설명하고, 각각의 코드 예제와 함께 알아보겠습니다.


1. 블러링 (Blurring)

블러링은 이미지의 노이즈를 제거하고 부드러운 효과를 주는 필터링 기법입니다. OpenCVSharp에서는 여러 가지 블러링 필터를 제공합니다.

📌 평균 블러 (Averaging Blur)

가장 기본적인 블러링 방법으로, 커널 내 픽셀 값의 평균을 계산하여 적용합니다.

using OpenCvSharp;

Mat src = Cv2.ImRead("image.jpg");
Mat dst = new Mat();
Cv2.Blur(src, dst, new Size(5, 5));
Cv2.ImWrite("blurred.jpg", dst);

📌 가우시안 블러 (Gaussian Blur)

가우시안 블러는 평균 블러보다 더 부드러운 블러 효과를 제공합니다.

Cv2.GaussianBlur(src, dst, new Size(5, 5), 0);

📌 중간값 블러 (Median Blur)

중간값 블러는 Salt & Pepper 노이즈 제거에 효과적입니다.

Cv2.MedianBlur(src, dst, 5);

2. 샤프닝 (Sharpening)

샤프닝 필터는 이미지의 가장자리를 강조하여 선명도를 높입니다. 커널을 사용하여 샤프닝 효과를 줄 수 있습니다.

Mat kernel = new Mat(3, 3, MatType.CV_32F, new float[] {
    -1, -1, -1,
    -1,  9, -1,
    -1, -1, -1
});
Cv2.Filter2D(src, dst, -1, kernel);

이 커널은 중심 픽셀을 강조하면서 주변 픽셀을 감소시켜 샤프닝 효과를 줍니다.


3. 엣지 검출 (Edge Detection)

엣지 검출은 이미지 내 객체의 경계를 추출하는 필터링 기법입니다.

📌 소벨 필터 (Sobel Filter)

소벨 필터는 X 및 Y 방향의 미분을 계산하여 엣지를 검출합니다.

Cv2.Sobel(src, dst, MatType.CV_64F, 1, 0);

위 코드는 X 방향 엣지를 검출하는 예제이며, (1,0)(0,1)로 변경하면 Y 방향 엣지를 검출할 수 있습니다.

📌 라플라시안 필터 (Laplacian Filter)

라플라시안 필터는 2차 미분을 사용하여 더욱 선명한 엣지를 검출합니다.

Cv2.Laplacian(src, dst, MatType.CV_64F);

📌 캐니 엣지 검출 (Canny Edge Detection)

가장 널리 사용되는 엣지 검출 기법으로, 강한 엣지만 남겨서 경계를 강조합니다.

Cv2.Canny(src, dst, 100, 200);

4. 색상 변환 (Color Conversion)

색상 변환 필터는 이미지의 색상 공간을 변경하는 데 사용됩니다.

📌 그레이스케일 변환 (Grayscale Conversion)

컬러 이미지를 흑백으로 변환하는 방법입니다.

Cv2.CvtColor(src, dst, ColorConversionCodes.BGR2GRAY);

📌 HSV 변환

HSV 색상 공간은 색상(Hue), 채도(Saturation), 명도(Value)로 구성되며, 색상 기반 필터링에 유용합니다.

Cv2.CvtColor(src, dst, ColorConversionCodes.BGR2HSV);

5. 비선형 필터 (Non-linear Filter)

📌 Bilateral 필터 (양방향 필터)

양방향 필터는 경계를 보존하면서 노이즈를 제거하는 강력한 필터입니다.

Cv2.BilateralFilter(src, dst, 9, 75, 75);

이 필터는 스무딩 효과를 주면서도 중요한 경계를 유지하는 특징이 있습니다.


6. 필터링 결과 예시

아래는 다양한 필터링 기법을 적용한 결과입니다.

필터링 기법결과

원본 이미지  
평균 블러  
샤프닝  
캐니 엣지  

7. 마무리

이제 C# OpenCVSharp을 이용한 다양한 필터링 기법을 배웠습니다. 블러링, 샤프닝, 엣지 검출, 색상 변환 등은 이미지 처리에서 가장 많이 사용되는 필터들입니다.

이 글이 유익했다면 좋아요와 댓글 부탁드립니다! 😊