Filter löschen
Filter löschen

How to do Interpolation for paired images.?

1 Ansicht (letzte 30 Tage)
Sebastian Joseph
Sebastian Joseph am 16 Apr. 2021
Kommentiert: Sebastian Joseph am 22 Apr. 2021
I have a pair of projected images of a 3d object and I want to find the intermediate image between the projected images by interpolation in Fourier domain. Eg the projected images are at 0 degree and 50°. How to find the intermediate image say @ 25° by interpolation 2/1 in fourier domain..??

Antworten (1)

Matt J
Matt J am 16 Apr. 2021
  3 Kommentare
Sebastian Joseph
Sebastian Joseph am 22 Apr. 2021
Bearbeitet: Matt J am 22 Apr. 2021
Hi,
I tried for one of the ways as shown in below for interpolation, but every time i am getting the result (attached) and is far away from which i want. I want a result similar to the input images but in a projection angle of 25 degree.
The code:.
%%
clc; clear all;
close all;
% Initialization of Input Images
A1 = im2double(rgb2gray(imread('cuphex 0degree.png')));
A5 = im2double(rgb2gray(imread('cuphex 50degree.png')));
% Fourier Transorm of Input Image
A1 = fftshift(fft2(ifftshift(1.*A1)));
A5 = fftshift(fft2(ifftshift(1.*A5)));
[M,N] = size(A1);
Nx = N;
Mx = 2*N;
height = size(A1,1);
width = size(A1,2);
%Taking Vectors from input images
for ii = 1:height
input_fftA1 = A1(ii,:,:);
input_fftA1(:,1:2:2*N) = A1(ii,:,:);
[x y] = size(input_fftA1);
[x0 y0] = meshgrid(1:y, 1:x);
input_fftA5 = A5(ii,:,:);
input_fftA5(:,2:2:2*N) = A5(ii,:,:);
[x1 y1] = size(input_fftA5);
[x01 y01] = meshgrid(1:y1, 1:x1);
% figure(1), imagesc(abs(input_fftA1));
% figure(3), imagesc(abs(input_fftA5));
end
% Interpolation Plane
mj1 = 1.5:2:2*Mx+1;
mj2 = 1.5:2:2*M+1;
mj3 = mj2'+mj1;
% figure(), plot(mj1);
% figure(), imagesc(mj1);
% hold all
% figure(), plot(mj2);
% figure(), imagesc(mj2);
% figure(), plot(mj3);
% figure(), imagesc(mj3);
% Interpolation
Out_img = interp2(x0,y0,mj3,x01,y01, 'linear'); %spline , 'extrap'
imagesc(Out_img);
out = Out_img;
out(isnan(out))=0;%replace Nan
plot(out);
out1=reshape(out,length(N),[]);
plot(out1);
imagesc(out1);
% IFFT of the result
% Fourier Transorm of Input Image
A3 = fftshift(ifft2(ifftshift(out1)));
imagesc(A3);
I am really got stucked with this. Could you let me know where i am making mistake..??
Sebastian Joseph
Sebastian Joseph am 22 Apr. 2021
I would like to have intermediate image between paired image. between 0 and 50 degree image. some what 25 degree image like this.(attached)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Geometric Transformation and Image Registration finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by