Если кто помнит, я как-то поднимал вопрос о восстановлении исходного рисунка из фильтрованного, если известна маска фильтрации.
Короче было решено, что это скорее всего невозможно.
Для справок
http://vbnet.ru/forum/show.aspx?id=89862
Учусь в универе, видимо, не зря. Вот нам рассказали, что есть такое преобразование, называется фурье. И что оно бывает многомерным (меня волнует двухмерное).
Кроме того, нам рассказали, что есть такая операция, называется свертка.
Свертка двух функций f,g есть функция, задаваемая формулой: (f ж g)(от икс) = интеграл(по t от минус бесконечности до плюс бесконечности){ f(t)*g(x-t) }
(это в случае, если функции определены на всей оси)
(оператором ж я обозначил свертку)
Вся соль свертки в том, что фурье-разложение результата есть произведение фурье-разложений фций f,g:
Fourier(f ж g) (ОтЧастоты) = Fourier(f)(ОтЧастоты)*Fourier(g)(ОтЧастоты)*нормировка
Так вот надо заметить, что фильтрация - это по сути дела свертка, только функции подозрительные.
И идея такова. После применения маски кфц-ты фурье исходного рисунка были умножены на кфц-ты фурье маски. А что ести всять ту самую маску, обратить ее кфц-ты фурье и затем применить новую маску к исходному изображению... По идее, если все правильно сделать, должна получиться так желаемая исходная картинка! :)
НО! как только я собрался это реализовывать, мгновенно понял, что не знаю, насколько данное верно в моем случае
и
самое главное в какой области брать преобразования фурье для маски: считая ее размером самой себя или увеличенной (дополненной нулями) до размеров рисунка. Это вопрос жизни и смерти, так как сделать преобразование фурье от большого рисунка - для меня пока непостижимо (у меня от 25х25 считается approx 10сек :( )
Помогите мне в этом разобраться (если здесь есть люди, разбирающиеся в преобразованиях фурье дискретных данных)!
У меня тут с преобразованием фурье и то какие-то глюки... Вроде надо a_0 пополам делить, а работает только если не делить...
Ответить
|