Can I undo Interp2 function?

조회 수: 2 (최근 30일)
bkshn
bkshn 2013년 12월 2일
답변: Matt J 2013년 12월 12일
I use code bellow to resample my Image
for i=1:z
nimg(:,:,i) = interp2(Ox,Oy,img(:,:,i),Nx,Ny,intmethod);
end
Can I undo interpolating to receive first Image?

답변 (3개)

Matt J
Matt J 2013년 12월 2일
편집: Matt J 2013년 12월 2일
Approximately, yes, depending somewhat on what the transformation is and whether it is invertible. For example imrotate(Img, theta) does a specialized form of the resampling you've shown. The inverse rotation imrotate(img,-theta) would return an approximation of your original image.
  댓글 수: 2
bkshn
bkshn 2013년 12월 4일
How can I find that my transformation is invertible? I use interp2, is it invertible?
Matt J
Matt J 2013년 12월 4일
편집: Matt J 2013년 12월 4일
The specific transformation you are performing with interp2 has to be analyzed for invertibility on mathematical grounds. In general, if the Jacobian determinant of your transformation is non-zero through the image, the transformation is invertible.
Common kinds of invertible transformations are rotations, translations, certain affine transformations, etc... See documentation for tformfwd() and tforminv() for additional common kinds of invertible transformations.
Instead of interp2, you might even consider using maketform(), imtransform() and tforminv(), since they make transform inversion simpler.

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2013년 12월 2일
Take a 20 KHz sine wave. Resample it 5000 times per second. Lots of resolution! Now resample those 5000 samples per second back to 20000 KHz. Plot it out, and you'll see a good approximation of the original signal. Oh, wait, the plot is flat ?!? Better resample it 10000 times per second for better accuracy ?!?
  댓글 수: 1
bkshn
bkshn 2013년 12월 4일
I want to resample an image not a Wave, I don't know is it your solution good for me?

댓글을 달려면 로그인하십시오.


Matt J
Matt J 2013년 12월 12일
If you were hoping to invert not just the continuous space transform approximated by interp2, but in fact the whole discrete image transformation it performs, you could try FUNC2MAT.
Basically, you can convert the transformation W=interp2(V,XI,YI) to a matrix equation
W(:)=A*V(:)
where the matrix A is obtained by
A=func2mat(@(z)interp2(z,XI,YI), zeros(size(V)));
You can then attempt linear algebraic pseudo-inversion
V_recovered=reshape(A\W(:), size(V))
However, the invertability of A would depend greatly on XI, YI and in an unclear way.

카테고리

Help CenterFile Exchange에서 Correlation and Convolution에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by