2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 fft и регистрация изображения через оптимизацию
Сообщение12.10.2012, 15:30 


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

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

минимизатор выдает [1 0 0 1 0 0] - что соответствует исходному не искажённому изображению.
возможно дело именно в нём.

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

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);

 Профиль  
                  
 
 Re: fft и регистрация изображения через оптимизацию
Сообщение15.10.2012, 11:56 


20/04/12
114
на самом деле хотелось бы даже понять, прав ли я хотя бы концептуально.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group