2013-10-14 3 views
2

임의로 생성 된 핑크 노이즈가 포함 된 임의의 크기의 2D 이미지를 생성하고 싶습니다. Wikipedia suggests에서 핑크 노이즈의 2D 일반화는 1/f^2로 떨어지는 에너지를 갖습니다. 나는 1D 핑크 노이즈 벡터를 계산하는 some code on the MATLAB File Exchange을 발견했습니다. 그러나 나는 그것을 2 차원으로 적절하게 일반화하는 방법을 모른다 - 나는 fft에 익숙하지 않고, ifft를 계산할 때 아래의 순진한 시도는 복잡한 벡터를 만든다.Matlab에서 핑크 노이즈 이미지 생성

function pink = pinkNoiseImage(nrow,ncol) 

rnrow = 2.^(ceil(log2(nrow))); 
rncol = 2.^(ceil(log2(ncol))); 
r = randn(rnrow,rncol); 
rf = fft(r); 
rnup = rnrow/2+1; 
cnup = rncol/2+1; 
frf = kron(1./sqrt(1:cnup),1./sqrt(1:rnup)'); 

rf(1:rnup,1:cnup) = rf(1:rnup,1:cnup).*frf; 
rf(rnup+1:rnrow,1:cnup) = real(frf(rnrow/2:-1:2,1:cnup))-1i*imag(frf(rnrow/2:-1:2,1:cnup)); 
rf(1:rnup,cnup+1:rncol) = real(frf(1:rnup,rncol/2:-1:2))-1i*imag(frf(1:rnup,rncol/2:-1:2)); 
rf(rnup+1:rnrow,cnup+1:rncol) = real(frf(rnrow/2:-1:2,rncol/2:-1:2))-1i*imag(frf(rnrow/2:-1:2,rncol/2:-1:2)); 

pink = ifft(rf); 

어떻게 핑크 노이즈가 포함 된 2D 매트릭스를 생성 할 수 있습니까?

답변

3

먼저 위키 백과에서 말하는 것을 항상 믿지 마십시오. 또는 핑크 노이즈의 정의가 2D와 일대일이 아니기 때문에주의 깊게 읽으십시오. 둘째, FEX file을 사용하여 정상적인 오류 분포와 함께 1/f^beta 공간 노이즈를 생성 할 수 있습니다. 해당 파일의 문서에서 자세한 내용을 읽어보십시오.

+0

FEX 참조 주셔서 감사합니다. 그 파일에 의해 계산 된 브라운 노이즈는 핑크 노이즈보다 나에게 더 유용 할 수 있습니다. – nhowe