?

Log in

No account? Create an account
  Journal   Friends   Calendar   User Info   Memories
 

Электронный миссионер

11th February, 2013. 11:14 pm. Преобразование Фурье для поверхности.

С лёгкой подачи eddy_em , начал курить FFT для поверхности. Он дал гениальную подсказку: ведь любое изображение - это и есть поверхность! Координаты x,y - это разрешение картинки, а z - яркость отдельного пикселя.
Хороший пример синусоидальное изображение и его трёхмерный график (т.е. просто по яркости построена третья координата)


Волновая картинка и её трёхмерное представление


По началу я даже слабо себе представлял как это и что это такое. Погуглил по теме и нашёл замечательный сайтец, на котором всё становится ясно просто по картинкам http://www.qsimaging.com/ccd_noise_interpret_ffts.html . В конце всего мегагайда там есть ссылка на кроссплатформенную программу http://rsb.info.nih.gov/ij/download.html (виндузятники возрадуйтесь :) ). Попробовал, программа просто кошерная, "но есть нюанс" (С). FFT она делает как-то не так. Если поглядеть картинки в примерах, то после преобразования такой синусоиды должно получится акуратные три точки, а у меня получаются три точки и ещё какой-то шум


Исходное изображение, FFT в примере, и мой вариант. Разница наглядна...


Но другая "плюха", это возможность трёхмерного представления любой картинки (например, вот в начале поста). И можно представить эту спектрограмму в виде трёхмерного графика (с которым удобнее работать)


Моя же спектрограмма


В общем, понял что тема очень неплохая, но нужно попробовать другие методы. И тут мне подсказывает товарищ M E о том, что такие петрушки можно делать с помощью imagemagic! За что ему говорю БОЛЬШОЕ СПАСИБО! Моментально нагугливаю мануал. Пробую пример (обращаю внимание,что картинка в примере генерится та же самая, что в заголовке поста):

convert -size 128x129 gradient: -chop 0x1 -rotate 90 -evaluate sine 4 sine4.png

Всё отлично, генерируется картинка, как выше. После чего хочу её отфурьячить, и выполняю:

convert sine4.png -fft +delete -auto-level -evaluate log 100 sine4_spectrum.png

И получаю корзинку МПХ:

dlinyj@dlinyj-G31M-S2L:~/tmp/fft$ convert sine4.png -fft +delete -contrast-stretch 0 -evaluate log 100 sine4_spectrum.png
convert: delegate library support not built-in `sine4.png' (FFTW) @ warning/fourier.c/ForwardFourierTransformImage/630.
convert: missing an image filename `sine4_spectrum.png' @ error/convert.c/ConvertImageCommand/3011.


Погуглил. Поставил: libfftw3-3 libfftw3-dev libjpeg62-dev libjpeg8-dev libjpeg8 fftw2 fftw-dev и... И то же самое. Печалька... Но в любом случае, ощутил всю мощ, так сказать. Надо будет наконец дописать программу, а то нетерпится попробовать, даже с косячащим преобразованием.

З.Ы. Ещё одна ссылочка, про Фурье и Imagemagick http://www.fmwconcepts.com/imagemagick/fourier_transforms/fourier.html . Для себя
Ещё одна ссылка про установку Imagemagick http://www.imagemagick.org/discourse-server/viewtopic.php?t=14251&p=49140

Read 24 Notes -Make Notes

Back A Day - Forward A Day