我是Matlab的新手。我想比较两个苹果之间几个斑点的红色。
这是我正在使用的代码:
imgApple = imread('apples.tif');
figure(1), imshow(imgApple);
imgROI = imrect;
imgMask = createMask(imgROI);
imgBound = bwboundaries(imgMask);
imgXY = imgBound{1};
imgX = imgXY(:,2);
imgY = imgXY(:,1);
imgTopLine = min(imgX);
imgBotLine = max(imgX);
imgLeftCol = min(imgY);
imgRightCol = max(imgY);
imgWitdh = imgBotLine - imgTopLine + 1;
imgHeight = imgRightCol - imgLeftCol + 1;
imgCrop = imcrop(imgApple, [imgTopLine, imgLeftCol, imgWidth, imgHeight]);
redIndex = mean(mean(imgCrop(:,:,1)));
imgExcel = xlsappend('file.xls', redIndex, 'Sheet1');
我遇到的问题是,如果我这样写,我将需要多次评估createMask
,具体取决于我正在查看的点数(在转换投资回报率之后)。我尝试了for
循环,但无法创建几个我可以合并使用的掩码:
newMask = imgMask;
index = (imgMask2 ~= 0);
newMask(index) = imgMask2(index);
来自How do I merge two masks together in MATLAB?
我想知道是否有任何方法可以使用for
循环自动化整个过程。任何帮助都表示赞赏,如果我没有明确解释,我总能澄清任何疑问。
提前致谢!