Difficulty with imwarp function

I am writing a code in order to generate a 3d view of a painting from a single image of the painting. For that, i have to generate the 3d views of all the planes present in the image using projective homography transformations. I am using imwarp in order to warp the image. But after warping the output image size is [295,524569] while the input image is only[892,1152]. Can anybody please tell me where am i going wrong?

2 Comments

I can not provide an answer but I think I may have a related problem. While using imwarp on an 777x3161 image I get the following error:
Error using ippgeotrans
Requested 50995x174010 (33.1GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a long time and
cause MATLAB to become unresponsive. See array size limit or preference panel for more information.
Error in imwarp>ippWarpAffine (line 566)
outputImage = ippgeotrans(single(inputImage),double(T),Rout.ImageSize,interp,single(fillVal));
Error in imwarp>remapPointsAndResample (line 223)
outputImage = ippWarpAffine(inputImage,R_A,tform,outputRef,method,fillValues);
Error in imwarp (line 210)
outputImage = remapPointsAndResample(parsedInputs.InputImage,R_A,tform,outputRef,method,fillValues);
I use imwarp inside a loop and the error only occurs for one particular image. For the other images imwarp returns an image with the expected size (777x3161)
There is no documentation on ippgeotrans so I have no idea why it is requesting an array of this astronomical size...
I responded in the Question you posted about this.

Sign in to comment.

 Accepted Answer

You probably used something like
[numrows, numcols] = size(YourImage)
when YourImage was an RGB image. RGB images are 3 dimensional, and when you use size() with only two outputs for a 3D matrix, the second output is set to the product of the number of columns and the length of the third dimension. For example,
[numrows, numcols] = size(zeros(25, 31, 3))
would return numrows of 25 and numcols of 31*3
When you take size() of a 3D matrix, either only use one output or else use at least 3 outputs.

More Answers (0)

Categories

Find more on Read, Write, and Modify Image in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!