상자 흐림

Box blur

상자 흐림(box linear filter라고도 함)은 결과 영상의 각 픽셀이 입력 영상의 인접 픽셀의 평균 값과 동일한 값을 갖는 공간 영역 선형 필터다.로우패스("블러링") 필터의 일종이다.3x3박스 블러("반경 1")는 매트릭스로 쓸 수 있다.

동일한 가중치를 사용하는 특성 때문에 슬라이딩 윈도우 알고리즘을 사용하는 것보다 훨씬 간단한 축적 알고리즘을 사용해 구현할 수 있다.[1]

박스 블러(box blur)[2]는 가우스 블러(Gaussian burl)의 근사치를 위해중심 한계 정리로는 상자 흐림을 반복적으로 적용하면 가우스 흐림을 근사하게 된다.[3]

주파수 영역에서 상자 블러에는 0과 음의 성분이 있다.즉, 상자 크기와 동일한 주기의 사인파가 완전히 흐려지고 상자 크기보다 짧은 파장은 위상역전(phase reverse)될 수 있는데, 이는 원래 이미지에서 두 개의 밝은 점 사이에 어두운 점이 있는 밝은 지점을 만들기 위해 두 개의 보크 이 접촉할 때 나타난다.

확장

  • Gwosdek 등.1-D 필터의 가장자리가 작은 부분과 함께 확장되는 부분 반경을 갖도록 확장된 상자 블러.정수 원형의 오차가 제거되어 가우스 근사치가 약간 개선된다.[3]
  • 마리오 클링게먼은 [ 3 }{{9{bmatrix가우시안 외관을 한 번의 패스로 더 잘 에뮬레이션하려고 하는 '스택 블러'를[4][5] 가지고 있다.[3]
  • Bhatia 등의 Stacked Integrity Image는 가우스 반응 곡선에 맞도록 몇 개의 상자 블러에 대한 가중 평균을 취한다.[3]

실행

다음의 가성소드는 3x3 박스 흐림을 구현한다.

상자 흐림(이미지){newImage를 이미지로 설정;x /*row*/, y/*column*/ on newImage:{// 커널이 맞지 않음! x < 1 또는 y < 1 또는 x + 1 == 너비 또는 y + 1 == 높이인 경우:계속;// P를 평균 9픽셀로 설정:X X XX P XX X X// 평균을 계산한다. 합계 = 영상[x - 1, y + 1] + // 왼쪽 상단image[x + 0, y + 1] + // 상단 중앙image[x + 1, y + 1] + // 오른쪽 상단image[x - 1, y + 0] + // 왼쪽 중간image[x + 0, y + 0] + // 현재 픽셀image[x + 1, y + 0] + // 오른쪽 중간image[x - 1, y - 1] + // 왼쪽 하단image[x + 0, y - 1] + // 로우 센터image[x + 1, y - 1]; // 오른쪽 아래 newImage[x, y] = Sum / 9;}newImage 반환;}

이 예는 커널 내부에 맞지 않는 이미지의 가장자리를 다루지 않기 때문에 이러한 영역이 블러셔되지 않은 상태로 유지된다.실제로 이 문제는 다음과 같은 방법으로 더 잘 처리된다.

  • 색상의 부재를 나타내는 알파 채널 도입
  • 품질에 따라 순위를 매겨 경계 확장:
    • 테두리에 미러링된 이미지 채우기
    • 마지막 픽셀에서 확장된 상수 색 채우기
    • 고정된 색상으로 패드

반지름 rN 픽셀의 박스 블러시를 구현할 때 다음과 같은 여러 가지 최적화를 적용할 수 있다.[6]

  1. 박스블러(box blurl)는 분리형 필터로, 화소당 수평 1개와 수직 1개의 평균 2r + 1픽셀의 1D 패스만 필요하다.이것은 복잡성을 O2(Nr)에서 O(Nr)로 낮춘다.디지털 신호 처리 용어에서 각 패스는 이동 평균 필터다.
  2. 축적하다.알고리즘은 각 픽셀의 합계를 폐기하는 대신 이전 합을 다시 사용하고, 기존 픽셀을 빼고 흐릿한 범위에서 새로운 픽셀을 추가해 업데이트한다.면적 표는 유사하게 사용될 수 있다.이것은 복잡성을 O(Nr)에서 O(N)로 낮춘다.
  3. 가우스 블러에 대한 근사치를 위해 다중 패스로 사용할 경우 계단식 통합자-콤브 필터 구조는 한 번의 패스로 동등한 작업을 수행할 수 있다.[7]

참고 항목

참조

  1. ^ 워치치 자로즈2001. 빠른 이미지 컨버전스펙트 이미지 컨버전스.
  2. ^ W3C SVG1.1 규격, 15.17 원시 'feGaussianBlu르'를 필터링한다.
  3. ^ a b c d e Getreuer, Pascal (17 December 2013). "ASurvey of Gaussian Convolution Algorithms". Image Processing on Line. 3: 286–310. doi:10.5201/ipol.2013.87. (코드 문서)
  4. ^ "Stackblur and Quadratic Stackblur". observablehq.com. 12 November 2018.
  5. ^ "How to Blur an Image on Android". Medium. 10 February 2020.
  6. ^ Kutsvir, Ivan. "Fastest Gaussian Blur (in linear time)". Retrieved 4 April 2020.
  7. ^ Sitaker, Kragen. "Hmm, aside from my note about how the family of kernels Costella discovered are precisely the uniform cardinal B-splines..." Hacker News.