Преобразование Фурье для поверхности.
Feb. 11th, 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
Хороший пример синусоидальное изображение и его трёхмерный график (т.е. просто по яркости построена третья координата)

Волновая картинка и её трёхмерное представление
По началу я даже слабо себе представлял как это и что это такое. Погуглил по теме и нашёл замечательный сайтец, на котором всё становится ясно просто по картинкам 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
no subject
Date: 2013-02-11 07:21 pm (UTC)а если нет, то почему ты удивляешься "шуму"? :)
no subject
Date: 2013-02-11 07:26 pm (UTC)no subject
Date: 2013-02-11 07:28 pm (UTC)no subject
Date: 2013-02-11 07:30 pm (UTC)no subject
Date: 2013-02-11 07:31 pm (UTC)no subject
Date: 2013-02-11 07:51 pm (UTC)no subject
Date: 2013-02-11 08:03 pm (UTC)no subject
Date: 2013-02-11 07:55 pm (UTC)может, еще шумы квантования? :)
no subject
Date: 2013-02-11 07:58 pm (UTC)no subject
Date: 2013-02-11 07:30 pm (UTC)Для опытов советую все-таки не мучиться с ImageMagic (все-таки, основное ее предназначение несколько иное), а поставить себе GNU Octave. Примеры работы с ней можешь у меня посмотреть (http://eddy-em.livejournal.com/tag/octave), а еще куча примеров в интернете для матлаба (а октава имеет такой же синтаксис и для нее полно уже модулей — считай, 99% матлабовского кода в ней заработает).
Если поставишь еще и VaveLab для октавы, сможешь поиграться с вейвлет-преобразованиями.
Ну и конечно, советую Гонсалеса и Вудса полистать. Очень познавательно.
no subject
Date: 2013-02-11 07:44 pm (UTC)Вообще, как это ни странно, до этого НИКОГДА не работал с картинками! Ну школьные опыты с фотошлёпом не в счёт.
Гонсалеса и Вудса качнул ещё вчера, полистал кратенько. Почитать нормально пока времени нет. Читаю книгу проф. Шноля, как её осилю, так буду читать остальное. Невероятно занимательно, он доказывает опытным путём, о влиянии космических объектов на распределение случайных чисел.
Тебе, как астроному и учёному должно быть весьма интересно. Чтобы сразу не отмахиваться, мол всё это ерунда, скажу, что товарищ основатель кафедры биофизики в МГУ, автор множества работ, стоял у истоков множества величайших открытий СССР, в общем очень знаменитый чел. У Гордона в программе был, по культуре выступал и т.п. :) . Ну и для справки, своим этим исследованием занимается с 50-х годов. Так что, человек, который ведёт исследование 60 лет, вряд ли будет шарлатаном.
... тут Остапа понесло :) ...
no subject
Date: 2013-02-11 10:05 pm (UTC)А я вот не помню: писал ли я статейку куда-нибудь о применении вейвлетов для автофокусировки... Кажется, все-таки в ЖЖшке писал…
> Читаю книгу проф. Шноля
Как называется?
no subject
Date: 2013-02-12 04:10 am (UTC)Но там 350 страниц. Если интересно кратко ознакомится с его работами, то можно посмотреть интересное видео:
ACADEMIA. Симон Шноль. "У истоков молекулярной биологии".
1-я лекция (эфир 18 октября 2010 года)
http://static.tvkultura.ru/v/186304.flv
ACADEMIA. Симон Шноль. "У истоков молекулярной биологии".
2-я лекция (эфир 19 октября 2010 года)
http://static.tvkultura.ru/v/186868.flv
И/или прочитать статью http://www.trinitas.ru/rus/doc/0202/010a/02020052.htm или вот http://www.chronos.msu.ru/RREPORTS/shnol_ufn.pdf . Но последнее не даёт полной картины, т.к. они достаточно далеко ушли в перёд от этих публикаций.
no subject
Date: 2013-02-11 08:04 pm (UTC)no subject
Date: 2013-02-11 10:08 pm (UTC)no subject
Date: 2013-02-11 08:02 pm (UTC)no subject
Date: 2013-02-12 07:20 am (UTC)no subject
Date: 2013-02-20 03:56 am (UTC)пишут что тут вот для винды с fft http://blog.astrophotographytargets.com/2012/03/imagemagick-with-fftw-delegate-library-on-windows/ (но я не проверял)
картинка у меня 3 точки + *периодически* более слабые точки, но размазни явно нет http://imageshack.us/photo/my-images/40/62023623.gif/
у тебя размазня может быть как из-за странностей программы, так из-за того, что предположительно у тебя края синусоиды обрезаны -- они же должны "сходиться"