如果我的问题没有被完全理解,我很抱歉…我会试着通过描述我的问题来澄清它。
我有对象(在二进制图像中)几乎是curvey和long。我想画一条从顶点到最低点的直线,然后填满曲线和直线之间的封闭区域来测量它的面积,或者为了同样的目的找到曲线中每个点和直线之间的距离。我知道使用plot绘制一条线很容易,如下所示:
imshow(fnnShrink)
hold on
plot([TLx , BRx ],[TLy ,BRy],'-', 'MarkerFaceColor' , 'b')
hold off这给了我漂亮的彩色线条(在matlab的图形中),但问题是我不能在这条线上进行任何测量(这只是为了显示)。即使像这里的一个朋友告诉我的那样尝试处理程序,它仍然只给了我一行的长度(没有帮助)。我尝试过的一种解决方案是通过使用直线方程将像素设置为1来自己制作一条直线,并在图像中创建新的对象直线,如下所示:
m = (TLy - BRy) / (TLx - BRx); % Always Same
for i = TLx : 1 : BRx
fnnShrink(round(m * (i - TLx) + TLy) , round(i)) = 1;
fTest(round(m * (i - TLx) + TLy) , round(i)) = 1;
end这个解决方案适用于一些图像,如果(上点和下点之间)(在X轴上)的距离相对较大,问题是当距离非常小(斜率为负)时,我只能得到离散的线,而不是连续的线(上下点之间的一组点)...我的问题是..。如果你可以的话请帮帮我。
发布于 2014-03-24 22:30:53
实际上,与matlab中的所有绘图功能一样,imshow并不只显示绘图。它还返回所创建对象的句柄( matlab中相当于指针的句柄)。所以,你只需要
new_object = imshow(...)而不只是即兴表演
https://stackoverflow.com/questions/22611114
复制相似问题