Phillip
Posts:
12
Registered:
8/2/10
|
|
Re: Image rotation detection probelm
Posted:
Dec 11, 2012 5:54 PM
|
|
Hi Darren,
The warning appears because you can't do much useful maths on an integer array. Just follow the suggestion shown in the warning. This will convert the image from integer to double/single precision "float" (i.e. a number that can have decimal points). Single uses half the memory but you get half the precision in terms of decimal points etc... generally use single if you are worried about memory issues, otherwise, you may as well use double. The default for new Matlab variables is double.
Cheers,
Phillip
"Darren g" wrote in message <ka74i0$32b$1@newscl01ah.mathworks.com>... > Hi Phillip, > > Thanks. I have tried the following code for measuring the pure shift but it show the error > > Warning: CONV2 on values of class UINT8 is obsolete. > Use CONV2(DOUBLE(A),DOUBLE(B)) or CONV2(SINGLE(A),SINGLE(B)) instead. > > In uint8.conv2 at 11 > In xcorr2 at 17 > In translation at 18 > > The code is here. > > clear all; > image1 = imread('0001.jpg'); > > xShift = 0; > yShift = 20; > translatingElement = translate(strel(1), [yShift xShift]); > image2 = imdilate(image1,translatingElement); > image1 = image1(1+yShift:end-yShift,1+xShift:end-xShift); > % get rid of Infs from the imdilate function > image2 = image2(1+yShift:end-yShift,1+xShift:end-xShift); > figure (1); > imagesc(image1); > axis image; > figure (2); > imagesc(image2); > axis image; > > d = xcorr2(image1,image2); > figure (3); > imagesc(d); > axis image; > [maxd, maxd_pos_Col] = max(max(d)) > [maxd, maxd_pos_Row] = max(d(:, maxd_pos_Col)) > > Shift = RowCentre - maxd_pos_Row > > I could not figure out the error? > > Thanks. > Darren
|
|