2010-01-18 4 views
5

C#에서 일부 이미지 처리 코드를 수행하고 있지만 라이브러리 나 GNU 코드를 사용할 수 없습니다.푸리에 함수를 사용하지 않는 언샵 마스크 코딩

언샵 마스크 함수는 가우시안 블러에 따라 달라지며, 푸리에 변환에 따라 달라집니다. 이 모든 것들에 대한 코드를 작성하고 모든 것들이 작동하지만, 긴 이야기를 짧게하기 위해, 나는 FFT 기능을 제거해야합니다. 아마 FFT를 필요로하지 않는 다른 방법으로 언샵 마스크를 수행 할 수있는 방법이 있습니까?

+0

필자는 푸리에 변환을 사용하여 얻을 수있는 엄청난 속도 향상을 고려하여 왜 푸리에 변환을 사용할 수 없는지를 아는 것이 흥미로울 것이라고 생각합니다. –

+0

기본적으로 단위 테스트가 진행됩니다. 나는 UnsharpMask를 유산 목적으로 유지하고 있으며 거의 ​​사용되지 않습니다. 그러나 이러한 함수를 지원하기 위해 복잡한 숫자 형식 이미지와 FFT 기능을 처리하기위한 다소 큰 클래스를 만들어야했지만 테스트가 완료되었습니다. 이러한 FFT 단위 테스트는 정말 고통 스럽지만 UnsharpMask를 사용했다면 문제가되지 않습니다. – Jono

+0

FFT를 다른 것으로 바꾸는 대신 Gaussian 블러를 다른 것으로 대체하고 여전히 UnsharpMask를 수행 할 수 있습니까? – Jono

답변

2

다음 내 요구에 맞는 솔루션을 발견 건의 할 것입니다.

몇 가지 빠르고 더러운 흐림 알고리즘을 시도했으며 Box BlurStack Blur으로 충분하다는 것을 알았습니다. Stack Blur는 Blur 클리너가 깨끗하고 Box Blur가 있으며 Gaussian보다 몇 배 빠릅니다. 따라서 가우스 대신 두 가지 중 하나를 사용할 수 있습니다.

이제 모든 FFT 코드를 제거하고 훨씬 더 관리하기 쉬운 것으로 바꿀 수 있습니다. 이 솔루션은 모든 사람에게 적합한 것은 아니지만 UnsharpMask는 흐리게 처리를 기반으로하므로 과학과 너무 정확하게 일치하지는 않습니다.

그런데 Gimp의 Gaussian 블러는 FFT를 피하는 것 같습니다.

+0

I ' 많은 수의 이미지를 자동으로 언 샤프 할 필요가있을 때 자주 상자 흐림 효과를 두 번 또는 세 번 사용하여 빠르고 거친 흐림 효과를 얻었습니다. – DarenW

+0

김프가 가우시안 블러에 대해 IIR 근사를 사용한다고 생각합니다. – Royi

3

가우시안 블러의 푸리에 변환 부분은 가우시안 커널로 컨볼 루션을 수행하는 효율적인 방법 일뿐입니다. 적절한 표준 편차와 크기의 가우스 커널 (표준 편차가 약 5-6 배 정도의 홀수 크기의 커널)을 사용하여 직선적 인 컨볼 루션을 사용하여 수행 할 수 있습니다.

Convolution on Wikipedia을 참조하십시오.

+0

좋은 답변입니다. O (n * n) 알고리즘 (직접 컨볼 루션)에 대해 O (n ln n) 알고리즘을 교환하고 있으므로 직접 컨볼 루션을 사용하여 2D 이미지를 부드럽게하는 속도가 훨씬 느려집니다. 속도가 문제가되면 숫자 레서피에서 FFT 알고리즘을 매우 쉽게 복사 할 수 있습니다. – Paul

+0

NR 코드는 상업적 용도로는 무료가 아니라고 생각합니다. (op는 GNU 코드가 NR 라이센스일지도 모른다고 생각하지 않습니다.) –

0

라이브러리 나 GNU 파일을 사용할 수 없더라도 해당 구현을보고 요구 사항에 맞는 유사한 코드를 재현 할 수 있습니까?

openCV 기능 목록. 여기서 함수 세부 정보를 확인한 다음 헤더 파일에 구현 세부 정보를 확인하십시오. 당신은 C#을 기반 구현에 관심이 있다면 http://opencv.willowgarage.com/documentation/genindex.html

또한 나는이 http://aforgenet.com/framework/

+0

openCV가 작동 할 수 있습니다. Aforge는 내가 사용할 수없는 LGPL이다. 또한 나는 The Gimp에서 Gauss blur가 FFT를 사용하지 않는 것으로 나타났습니다. http://git.gnome.org/browse/gimp/tree/plug-ins/common/blur-gauss.c – Jono

관련 문제