是否可以在cpselect图像上包含绘图线?

时间:2015-11-03 18:21:46

标签: image matlab

是否可以在图像中显示检测到的线条,然后使用该图像保留线条,作为MATLAB cpselect工具中的两个图像之一?

如果我检测到如下图像中的线条:

enter image description here

如何在cpselect工具中显示此图像以及绘制的线条?

唯一的解决方案是在图像中使用这些线保存新图像,然后在cpselect工具中使用新的组合图像,或者有没有办法在cpselect工具中绘制线条和图像?

1 个答案:

答案 0 :(得分:0)

在阅读cpselect工具背后的代码后,我发现cpselect的图像输入参数只接受数字或逻辑类型。对我而言,这意味着在输入cpselect的图像上显示线条的唯一方法是线条实际上是图像的一部分。

这可以通过找到构成线的所有点来完成,或者通过使用线的方程,或者通过使用诸如Bresenham's的算法来找到两个端点之间的点。一旦获得了点,就改变线点位置处的图像像素强度值。完成此操作后,可以将新图像读入cpselect工具。

对于我的项目,我决定放弃使用cpselect工具。我刚刚创建了一个包含我的图像的图形,使用绘图在图像上显示我的线条,然后使用getpts函数允许用户从图像中选择点。

I = imread('image1.png');
lines = ARRAY OF LINE ENDPOINTS IN COLUMNS OF 'y1 x1 y2 x2'

ref = figure();
imshow(I)
hold on
for k = 1:length(lines)
    xy = [lines(k,2),lines(k,4); lines(k,1), lines(k,3)]
    plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
end

[rx, ry] = getpts(ref);

虽然与使用cpselect相比,我觉得最终结果与用户一样直观,但它确实做了我想做的事。