Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фокусировка изображения 
:(
    Опции темы
W4FhLF
Дата 18.5.2011, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



Здравствуйте!

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

Можно ли с этим как-то бороться? Хотя бы частично улучшить ситуацию?

Присоединённый файл ( Кол-во скачиваний: 34 )
Присоединённый файл  focus.png 354,59 Kb


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
maxim1000
Дата 18.5.2011, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



наложение со сдвигом можно представить в виде линейного фильтра
и его можно обратить в некоторых ситуациях

рисунок выглядит так, как будто к нему применили такую операцию: B(x,y)=(A(x,y)+A(x,y+10))/2
соответственно, получаем: A(x,y+10)=2*B(x,y)-A(x,y)
т.е. зная первые 10 строчек мы можем восстановить изображение

две неприятности:
1. точно первые 10 строчек мы не знаем
2. ошибки округления и шумы накапливаются

в принципе, с этим бороться можно, но лучше попробовать по-простому: сказать, что первые 10 строчек полностью чёрные (или выбрать их средний цвет) и запустить этот алгоритм - вдруг результат будет иметь приемлемое качество...

Это сообщение отредактировал(а) maxim1000 - 18.5.2011, 10:29


--------------------
qqq
PM WWW   Вверх
W4FhLF
Дата 18.5.2011, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



maxim1000, спасибо за идею. Это действительно самое простое решение с которого следует начать. Вероятно, в качестве значения A(x,y) лучше брать среднее значение некоторой окрестности. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
W4FhLF
Дата 18.5.2011, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



Попробовал на простейшем примере, сработало (см. simple.png, слева картинка со сдвигом, справа восстановленная, которая точно соответствует оригиналу).

Далее попробовал тот же код на картинке из первого поста (см. filtered.png). Можно заключить, что подход не сработал. В качестве начального приближения значений пикселей в первых 10 строчках брал их среднее. 

Пытаюсь сейчас применить деконволюцию. Пока не очень получается. 

Присоединённый файл ( Кол-во скачиваний: 20 )
Присоединённый файл  simple.png 33,84 Kb


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
W4FhLF
Дата 18.5.2011, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



Ещё одна картинка для предыдущего поста. 

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  filtered.png 486,45 Kb


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
maxim1000
Дата 18.5.2011, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



да, похоже, основная проблема - накопление ошибок - даёт себя знать...

Цитата(W4FhLF @  18.5.2011,  15:57 Найти цитируемый пост)
Пытаюсь сейчас применить деконволюцию.

если я правильно понимаю её описание, то в общем-то "A(x,y+10)=2*B(x,y)-A(x,y)" - это она и есть

нужно как-то затушить шум

например, можно попробовать использовать среднее значение не только для первых строчек, но и для остальных:
1. C(x,y+10)=2*B(x,y)-A(x,y)
2. D(x,y+10)=средний цвет исходного изображения вокруг (x,y+10)
3. A(x,y+10)=C(x,y+10)*0.9+D(x,y+10)*0.1

0.9 и 0.1 - здесь можно поиграться, главное, чтобы в сумме была 1

увеличение второго будет лучше подавлять шумы, но начнёт "проглядывать" исходное изображение со всеми своими "дубликатами"


--------------------
qqq
PM WWW   Вверх
esperanto
Дата 18.5.2011, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 31.5.2003

Репутация: 2
Всего: 4



А исходное изображение
Б - матрица светки (1 0 0 0 0 0 0 0 0 1)

Новое изображение это сверта А с Б
делаем трансформ фурье Ф(А-Б) 
по теореме о сверте Ф(А-Б)=Ф(А)Ф(Б)

Откуда Ф(а)=Ф(а-б)\Ф(Б)

Находим А используя обратную трансформацию фурье


не забыть предотвратить деление на ноль
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET
PM MAIL   Вверх
W4FhLF
Дата 19.5.2011, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



esperanto, насколько я понимаю, этот подход приведёт к аналогичному приумножению высокочастотного шума, только в частотной области. Фактически ты описал деконволюцию в частотной области, а она нестабильна. Но это мне напомнило про фильтры Вейнера, сейчас попытаюсь применить.

maxim1000, попробовал регуляризацию, которую ты предложил (см. regularized.png), оптимальные коэффициенты оказались в районе 0.7/0.3. Шума стало меньше, но если присмотреться, то все объекты умнодились на два, т.е. вместо 2х кратного наложения, теперь имеем 4х кратное. Не могу понять что не так.

Код очень простой (matlab):

Код
J = double(imread('d:\R&D\Thermo\Teplo.bmp'));

% average first 10 rows
Jr = J;
Jr(1:10,:,1) = mean(mean(Jr(1:10,:,1)));
Jr(1:10,:,2) = mean(mean(Jr(1:10,:,2)));
Jr(1:10,:,3) = mean(mean(Jr(1:10,:,3)));

% moving average 10x10 for smoothing
h=ones(10,10)*1/100;
S(:,:,1)=filter2(h,J(:,:,1));
S(:,:,2)=filter2(h,J(:,:,2));
S(:,:,3)=filter2(h,J(:,:,3));

% deconvolution
for i = 1:size(J,1)-10
    Jr(i+10,:,:) = (2*J(i,:,:)-Jr(i,:,:))*0.7 + S(i,:,:)*0.3;
end

% view result
figure;imshow(uint8(J));
figure;imshow(uint8(Jr));


Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  regularized.png 480,58 Kb


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
W4FhLF
Дата 19.5.2011, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



Вот результат применения фильтра Вейнера для деконволюции. Пример синтетический. На реальных данных результат скорее неудовлетворительный. Лучше во всяком случае не стало. 

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  deconvolved.png 59,08 Kb


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
maxim1000
Дата 19.5.2011, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(W4FhLF @  19.5.2011,  06:02 Найти цитируемый пост)
Шума стало меньше, но если присмотреться, то все объекты умнодились на два, т.е. вместо 2х кратного наложения, теперь имеем 4х кратное. Не могу понять что не так.

что не так - понятно:
т.к. для регуляризации использовалось исходное изображение, то его ненужные части оказались на результате
а нужно полное восстановление серого изображения, или можно восстановить бинарное? (т.е. просто выделить яркие области на чёрном фоне)


--------------------
qqq
PM WWW   Вверх
W4FhLF
Дата 19.5.2011, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



maxim1000, всё зависит от того какие области считать яркими? Цвету (яркости) в моём случае соответствует вполне конкретный физический параметр -- температура. В общем нужна возможность задавать пороговое значения.

Твоя идея состоит в том, чтобы после деконволюции провести пороговую фильтрацию?


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
maxim1000
Дата 19.5.2011, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



пришла одна мысль - воспользоваться тем, что преимущественно у нас отдельные объекты на тёмном фоне

т.е. нам нужно просто оставить верхний из объектов

Код

result(x,y)=min( source(x,y) , source(x,y+10) );



--------------------
qqq
PM WWW   Вверх
esperanto
Дата 19.5.2011, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 31.5.2003

Репутация: 2
Всего: 4



Цитата(W4FhLF @ 19.5.2011,  06:02)
esperanto, насколько я понимаю, этот подход приведёт к аналогичному приумножению высокочастотного шума, только в частотной области. Фактически ты описал деконволюцию в частотной области, а она нестабильна.  

Нельзя ли формально описать -аналогичное приумножение высокочастотного шума - что Вы имеете в виду?

-нестабильна в частотой области? - это что за зверь?


Необохдимо помнить, что если мы посмоитрим кривую чувствительности зрительных нейрнов коры мозга находящихся в зрительном кортексе зоны 17, то эти нейроны мало чувствительны к высоким частотам, поэтому можно позволить относительно высокие шумы на высоких частотах.

Так же я написал необходимо правильно обработать деление на ноль, дабы нивировать искжаение высоких частот.
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET
PM MAIL   Вверх
W4FhLF
Дата 20.5.2011, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



Цитата(esperanto @  19.5.2011,  23:49 Найти цитируемый пост)
Нельзя ли формально описать -аналогичное приумножение высокочастотного шума - что Вы имеете в виду?

-нестабильна в частотой области? - это что за зверь?


AFAIK, деконволюция относится к классу обратных задач, которые нестабильны по своей природе. Наверное я неправильно выразился выделив именно частотную область. 

Было у меня формальное доказательство этого факта в какой-то статье, но я забыл в какой именно. Гугл дал эту ссылку:
http://cnx.org/content/m13144/latest/

Там тоже объясняется.

Добавлено через 10 минут и 34 секунды
Цитата(maxim1000 @  19.5.2011,  17:43 Найти цитируемый пост)
т.е. нам нужно просто оставить верхний из объектов


Отличная идея между прочим smile

Светлые объекты вроде как даже сфокусировались (см. original.png и threshold.png). Однако тёмные стали ещё более размытыми.

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  threshold.png 293,90 Kb


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
W4FhLF
Дата 20.5.2011, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 5
Всего: 121



Картинка к предыдущему посту. 

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  original.png 314,71 Kb


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.