[問題] 求兩張影像的位移(subpixelshift)已回收
內容有點長,請見諒!
大家好,我目前有一個問題卡住,有上網找過但還是找不到答案,
所以想請上的板上的人可以給點想法,謝謝。
這是有關於位移估測(subpixel shift estimation)。
題目: 有一張高解析度影像(HR)(512X512),對這張影像做downsample image,
每隔8點取1個點,故此影像為64X64大小,即稱為低解析度影像(LR)。
取得LR影像如下:
在高解析度影像(HR)上,以(1,1)為起始點做downsample,
令為第1張影像g1(x,y);而第2張影像也是在HR上以(2,3)為起點做
downsample,為g2(x,y)。
而第1張和第2張之間的關係是有位移值(1,2)。
數學關係式:g2(x,y)=g1(x-a,y-b)
作法: 因為用到correlation ,但是我是在頻率域上做,在轉回空間域。
1.將g1和g2做傅立葉轉換,G1取供軛為G1c,與G2相乘為G12=G1c*G2。
2.Q12(是64X64大小)將其貼到(512X512)大小的零矩陣。
3.經過低通濾波器
4.反傅立葉轉換
5.取得最大值(peak)位置,即為subpixel shift
(PS)作法是按照架構圖上做的。
結果: 因為我找到peak位置和我所設定的位移值結果不相同...
[程式碼]:
%1.------讀取影像---------
a=im2double(imread(路徑));
%2.------downsamplimag----
[Nx,Ny]=size(a);
g0=zeros(Nx/8);
g1=zeros(Nx/8);
g0=a(1:8:end,1:8:end);
g1=a(2:8:end,3:8:end);
% 3.------FFT---------
G0=fftshift(fft2(g0));
G1=fftshift(fft2(g1));
% 4.------Correlation---
G0c=conj(G0);
Q12=G0c.*G1;
% 5.------upsampled(zero padding)----
[X Y]=size(Q12);N=8;
z0=zeros(N*X,N*Y);
[u,v]=size(z0);
z0((u/2-X/2+1):(u/2+X/2),(v/2-Y/2+1):(v/2+Y/2))=Q12; %擺在中間
Q12u=z0;
% 6.====== Lowpass Filter ======
[NX,NY]=size(Q12u);
WP=fftshift(lpfilter('gaussian',NX,NY,30));
WP=(WP.*conj(WP));
Q12ui=Q12u.*WP;
% 7.====== iFFT ======
q12=real(ifft2(Q12ui));
% 8.====== 找峰值(peak) ======
M=max(q12(:));
[r,c]=find(q12==M)
-----------------------------------------
因為向板上的人想請求一些協助所以PO文,如果真的不行在這板上PO這樣的問題,
我在刪除......
謝謝大大。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.134.30.110
推
04/30 01:50, , 1F
04/30 01:50, 1F
→
04/30 02:15, , 2F
04/30 02:15, 2F
→
04/30 02:16, , 3F
04/30 02:16, 3F
→
04/30 02:37, , 4F
04/30 02:37, 4F
→
04/30 02:39, , 5F
04/30 02:39, 5F
→
04/30 02:40, , 6F
04/30 02:40, 6F
→
04/30 03:27, , 7F
04/30 03:27, 7F
討論串 (同標題文章)