2013-03-25 3 views
0

Aforge를 사용하여 푸리에 변환을 시도하고 있습니다. 설명서에 따르면이 코드가 작동해야합니다.Aforge : C#을 사용하는 푸리에 변환

Bitmap a1 = new Bitmap("c://z3.bmp"); 
ComplexImage complexImage1 = ComplexImage.FromBitmap(a1); 
complexImage1.ForwardFourierTransform(); 
Bitmap fourierImage = complexImage1.ToBitmap(); 
fourierImage.Save("c:/z2.bmp"); 

몇 가지 이유로 "이미지 너비와 높이는 2의 제곱이어야합니다."라는 이상한 오류가 발생합니다. 그게 무슨 뜻인지는 모르겠지만 코드는 완벽하게 작동해야합니다. 어떤 도움을 주시겠습니까? 이 (정확히 2,4,8 그래서

답변

2

음 오류에 따라 당신은 제로로 패딩에 의해 그 widht과 높이

이미지를 확대 2의 거듭 제곱 이미지를 사용해야합니다 16,256,512,1024, ...) 픽셀은 푸리에 변환을 호출하기 전에 높고 넓습니다.

표준 고속 푸리에 알고리즘은 이러한 차원에서만 작동합니다. 일부 구현은 이미지가 일치하지 않으면 내부적으로 이미지를 확대합니다. Aforge는 그렇지 않습니다.

나는 Aforge 표준 .NET 그래픽 클래스를 사용하여 생각, 그래서 당신은 같은 것을 할 수있는 :

using (Bitmap large = new Bitmap(widthPOWER_OF_2, heightPOWER_OF_2, PixelFormat.YOUR_FORMAT)) 
    using (Graphics largeGraphics = Graphics.FromImage(large)) 
    { 
     largeGraphics.DrawImage(smallbitmap, 0 , 0); 
    } 
    } 
+0

방법 이미지를 확대 할 수 있습니까? 더하기 내가 크기를 변경하면 속성이 변할 것입니다 (푸리에 변환) 확대를 수행 할 필요없이 이미지를 푸리에 변환하는 방법은 무엇입니까? – user2205247

+0

누락 된 행과 열을 0으로 채우면 결과가 예상대로 유지되어야합니다. 나는 Aforge가 이미지를 더 큰 매트릭스로 복사하는 몇 가지 도구를 제공한다는 것을 확신합니다. 어떤 이유로 이미지를 확대하지 않고 푸리에 변환을해야하는 경우 복잡해집니다. 예를 들어 http://dsp.stackexchange.com/a/745/3799를 참조하십시오. – HugoRune

+0

괜찮습니다. 하지만 난 그들을 더 큰 이미지를 0으로 패딩에 나를 도울 수있는 아무것도 찾을 수 없습니다 – user2205247