我想在图像中拉伸一个椭圆对象,直到它形成一个圆圈。我的程序当前输入一个带有椭圆物体(例如,硬币在一个角度)的图像,对其进行阈值化和二值化,使用边缘检测/bwboundaries() 隔离感兴趣的区域,并执行 regionprops() 来计算长轴/短轴长度.
本质上,我想使用“MajorAxisLength”作为直径并在短轴上拉伸对象以形成一个圆。任何关于我应该如何解决这个问题的建议将不胜感激。我已经附加了一些代码供您阅读(不幸的是,我没有足够的声誉来上传图像,二值化图像看起来像黑色背景上的白色椭圆)。
编辑:我还想将此技术应用于图像的灰度版本,以检查拉伸的样子。
代码片段:
rgbImage = imread(fullFileName);
redChannel = rgbImage(:, :, 1);
binaryImage = redChannel < 90;
labeledImage = bwlabel(binaryImage);
area_measurements = regionprops(labeledImage,'Area');
allAreas = [area_measurements.Area];
biggestBlobIndex = find(allAreas == max(allAreas));
keeperBlobsImage = ismember(labeledImage, biggestBlobIndex);
measurements = regionprops(keeperBlobsImage,'Area','MajorAxisLength','MinorAxisLength')