The program showing "Error using - Matrix dimensions must agree. out = im2double(a) - im2double(d);"
Show older comments
a=imread('Whiteimage.jpg');
b=imread('vegetableimage.jpg');
c=rgb2gray(b);
d=im2bw(c);
out=im2double(a)-im2double(d);
se=strel('disk',6);
frameout=imdilate(out,se);
[L,n]=bwlabel(frameout,8);
s=regionprops(L,'Area','Centroid','BoundingBox','Perimeter');
imshow(b)
Answers (1)
Jan
on 12 Dec 2018
The error message is clear: a and d have different sizes. While d is a 2D matrix, a is most likely an RGB array with 3 dimensions. Check this using the debugger. Type this in the command window:
dbstop if error
Run the code again. When it stops at the error, check the sizes:
size(a)
size(d)
1 Comment
Guillaume
on 17 Dec 2018
Actually, if the two images are the same width and height, it shouldn't matter if one is greyscale and the other RGB, at least on versions >= R2016b. With implicit expansion, the grey image would be subtracted from each colour channel.
Therefore, either the OP is using an old version of matlab (in which case use bsxfun for the subtraction) or the images are completely different size (in which case, maybe they should be resized to a common size?)
Categories
Find more on Scope Variables and Generate Names 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!