C# OpenCV 강좌 : 제 13강 - 흐림 효과

   

흐림 효과 (Blur)


1 영상이나 이미지를 흐림 효과를 주어 번지게 하기 위해 사용합니다. 해당 픽셀의 주변값들과 비교하고 계산하여 픽셀들의 색상 값을 재조정합니다.

7 param1 * param2의 크기가 파란색의 사각형이며 붉은색이 흐림 처리될 픽셀입니다. 각 픽셀마다 주변의 픽셀들의 값을 비교하고 계산하여 픽셀들의 값을 재조정하게 됩니다. 단순 블러의 경우 파란 사각형 안의 평균값으로 붉은색 값을 재조정하게 되고, 모든 픽셀들에 대하여 적용합니다.


원본(Source, src)를 영상이나 이미지를 사용하면 됩니다.

영상 사용하기 : 3강 바로가기
이미지 사용하기 : 4강 바로가기


Class


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;

namespace test
{
    class OpenCV : IDisposable
    {
        IplImage blur;
            
        public IplImage Blur(IplImage src)
        {
            blur = new IplImage(src.Size, BitDepth.U8, 3);
            Cv.Smooth(src, blur, SmoothType.Gaussian);
            return blur;
        }
            
        public void Dispose()
        {
            if (blur != null) Cv.ReleaseImage(blur);
        }
    }
}


Class Code


public IplImage Blur(IplImage src)
{
    ...
}

Blur에서 영상을 흐림 효과로 번지게 합니다.

blur = new IplImage(src.Size, BitDepth.U8, 1);

blur에 메모리 확보를 위하여 선언합니다. IplImage(크기, 정밀도, 채널)을 입력합니다. 단색일 경우 채널은 1이며, 다색일 경우 채널은 3입니다.

Cv.Smooth(src, blur, SmoothType.Gaussian);

Cv.Smooth()를 이용하여 흐림 효과로 번지게 합니다. Cv.Smooth(원본, 결과, 효과종류, param1, param2, param3, param4)를 설정합니다.

  • Tip : param*은 생략할 수 있습니다.

   1. SmoothType.Bilateral - 양방향 블러 : 픽셀의 색상(param1)과 색상 차이(param2)에 대한 블러 2. SmoothType.Blur - 단순 블러 : param1 * param2 크기 픽셀들의 평균 3. SmoothType.BlurNoScale - 스케일링이 없는 단순 블러 : param1 * param2 크기 픽셀들의 합 4. SmoothType.Gaussian - 가우시안 블러 : param1 * param2 크기 픽셀들의 가중치 합, 가로 방향 표준편차(param3), 세로 방향 표준 편차(parma4) 5. SmoothType.Median - 중간값 블러 : param1 * param2 크기 픽셀들의 중간값


  • Tip : 가우시안 블러에서 param3, param4 자체적 계산에 의해 계산합니다. 주로 3*3, 5*5, 7*7을 사용합니다.
  • Tip : 중간값이란? 평균이 아닌 순서들의 중간에 있는 값입니다. 1, 2, 3, 100, 10000이라면 중간 값은 3입니다.


Main Code


using (OpenCV Convert = new OpenCV())
{
    pictureBoxIpl2.ImageIpl = Convert.Blur(src);
}

Blur흐림효과가 적용된 이미지를 표시합니다.


Result



SmoothType.Bilateral - 양방향 블러

2

SmoothType.Blur - 단순 블러

3

SmoothType.BlurNoScale - 스케일링이 없는 단순 블러

4

SmoothType.Gaussian - 가우시안 블러

5

SmoothType.Median - 중간값 블러

6



도움이 되셨다면 광고 클릭 부탁드립니다.

⤧  Next post C# OpenCV 강좌 : 제 14강 - 가장자리 검출 ⤧  Previous post C# OpenCV 강좌 : 제 12강 - 이진화