Поиск:

Ответ в темуСоздание новой темы Создание опроса
> fft и регистрация изображения через оптимизацию. 
:(
    Опции темы
mrgloom
Дата 12.10.2012, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



пытаюсь сделать регистрацию изображения через фазовую корреляцию, для этого задаю параметры перспективного преобразования и загоняю это всё в минимизатор. 

почему то не работает, когда пытаюсь исказить изображение и сравнить с не искажённым, чтобы проверить точность. 

ниже код на матлабе с комментариями.

main.m 

Цитата

global model; 
global scene; 

%загружаем изображения 
scene = imread('001_001.tif'); 
%тестовое искажение формат m11 m12 m21 m22 m31 m32 потом добавим не изменяемые m13=0 m23=0 m33=1 
H= [0.95 -0.05 0.0000 1.0000 -0.0000 -0.0000];% протестируем с известным искажением это позволит определить точность 
model=warp_im(scene,H); 

%m11 m12 m21 m22 m31 m32 
init_sol= [1 0 0 1 0 0]; %начальное приближение и есть само изображение 

%надо еще подумать над настройкой парамтеров 
opts= optimset('Algorithm','interior-point','MaxFunEvals',5000,'MaxIter',5000,'TolFun',1e-6,'TolX',1e-10); 

problem= createOptimProblem('fmincon','objective','compute_NCC','x0',init_sol,'options',opts); 

gs= GlobalSearch; 
[x,f]= run(gs,problem) 
param=x;




compute_NCC.m 

Цитата

function peak = compute_NCC(param) 

global scene; 
global model; 

img= warp_im(model,param); 

%возвращает изображения дополненные нулями 
sz1= size(scene); % y x размеры 
sz2= size(img); 
sz= abs(sz2-sz1); 
pad_im1=scene;pad_im2=img; 
if(sz1(1)>sz2(1))%y 
pad_im2= padarray(img,[sz(1),0],'post'); 
else 
pad_im1= padarray(scene,[sz(1),0],'post'); 
end; 
if(sz1(2)>sz2(2))%x 
pad_im2= padarray(pad_im2,[0,sz(2)],'post'); 
else 
pad_im1= padarray(pad_im1,[0,sz(2)],'post'); 
end; 

FFT1 = fftshift(fft2(pad_im1)); 
FFT2 = fftshift(fft2(pad_im2)); 

FFT = FFT1.*conj(FFT2); 
FFT = FFT./abs(FFT); 

mag = (ifft2(FFT)); 

peak= -abs(max(max(mag))) % минус потому что минимизируем



warp_im.m 

Цитата

function out = warp_im(img,param) 
%преобразуем к матрице гомографии 3х3 добавляя неизменяемые элементы 
param=[param(1:2),0,param(3:4),0,param(5:6),1] 
H=reshape(param,3,3)' 

tform = maketform('projective',H'); 
out= imtransform(img,tform);


Это сообщение отредактировал(а) mrgloom - 12.10.2012, 14:50
PM MAIL   Вверх
maxdiver
Дата 12.10.2012, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 16
Всего: 18



При дополнении нулями X с Y не перепутаны? (матлаб не знаю, поэтому могу только предполагать)
PM MAIL WWW ICQ   Вверх
mrgloom
Дата 12.10.2012, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

При дополнении нулями X с Y не перепутаны?

вроде нет.

минимизатор выдает [1 0 0 1 0 0] - что соответствует исходному не искажённому изображению.
возможно дело именно в нём.
PM MAIL   Вверх
mrgloom
Дата 15.10.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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




на самом деле хотелось бы даже понять, прав ли я хотя бы концептуально.
а то может быть такую cost function "метрику" как пик корреляции по каким либо причинам и нельзя использовать?
или проблема может быть в том, что пики сравнимы только между двумя изображениями, вот между двумя разными парами нет?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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