2015-11-03 34 views
0

是否可以在图像中显示检测到的线条,然后使用该图像,将线条保存为MATLAB cpselect工具中的两个图像之一?是否可以在cpselect图像上包含情节线?

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

enter image description here

如何可以然后与cpselect工具所绘制的线一起显示此图像?

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

回答

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,它没有做什么,我想为用户直观。

相关问题