custom interpolation kernel at imwarp function

6 次查看(过去 30 天)
hello, i want to use custom interpolation kernel at 'imwarp' function.
i.e i want to use cunstom imterpolation method at imwarp function (not like linear, bilinear, cubic..)
when i search similar case of my case, i found that in 'imresize' function, the custom interpolation kernel can be used.
but when i search if i can use custom interpolation kernel at 'imwarp' function, i saw some posts that can't possiable at imwarp function.... :( \
what is the right answer? is it possiable or not? And when i want to use custom interpolation kernel, what should i do?
i appreciate all of your answers. Thanks a lot. :))

采纳的回答

Aastha
Aastha 2024-8-9
I understand that you are trying to use a custom interpolation method.
According to MathWorks documentation of “imwarp” function, there is no direct way to implement a custom interpolation method.
Here is a workaround to implement inverse image warping as used in “imwarp” function along with custom interpolation method.
Considerations
  1. The “imwarp” function performs inverse warping by using a displacement field that maps the coordinates in the warped image back to the original image.
  2. If (u,v) is a coordinate in the warped image then (x,y) = (u+Du,v+Dv) is the corresponding coordinate in the original image
  3. The custom kernel for interpolation should be a function that takes as input x, y and the original Image I and returns an intensity for the location (u,v) in the warped image.
  4. (x,y) need not be inside the image boundary, (x,y) can also be floating point and not lie on the integer image grid. The custom interpolation function should be able to handle all these basic conditions.
  5. Additionally, I have assumed that the size of the warped image is equal to the original image.If not compute the max and min bounds using the displacement field and set the locations that map outside the original image to all zero or any value, you desire.
Steps to implement custom interpolation method:
  1. First, define a displacement field Du and Dv.
  2. Next, using a for loop iterate over all (u,v) in the warped image integer grid compute the corresponding coordinate (x,y)=(u+Du,v+Dv).
  3. Compute the intensity using custom interpolation method by passing the original image and the corresponding coordinates (x,y) as input.
  4. Save the returned intensity at the location (u,v) in the warped image.
  5. Repeat the steps 2-4 for all (u,v) pair in the warped image.
I have also attached a file “custom_interpolation.m” that illustrates an example on how to warp an image using a custom interpolation method.
Hope this helps!

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by