Matlab绘制一行像素(矢量到光栅图像)

时间:2017-12-04 10:14:38

标签: matlab

真的很基本,我会有一系列的积分,同时会创造一条线。我想把那条线转换成一个平面上的一系列像素

x = [10 33 50];
y = [50 30 9];

imshow(BW); hold on;
plot(x,y)

enter image description here

我最初想过使用poly2mask绘制线条并通过从90°角度绘制线条来展开它。

scalefactor = .08;

X1 = XData(1,1) - scalefactor*abs(YData(1,2) - YData(1,1));
X2 = XData(1,1) + scalefactor*abs(YData(1,2) - YData(1,1));
X3 = XData(1,2) + scalefactor*abs(YData(1,2) - YData(1,1));
X4 = XData(1,3) + scalefactor*abs(YData(1,2) - YData(1,3));
X5 = XData(1,3) - scalefactor*abs(YData(1,2) - YData(1,3));
X6 = XData(1,2) - scalefactor*abs(YData(1,2) - YData(1,1));

Y1 = YData(1,1) - scalefactor*abs(XData(1,2) - XData(1,1));
Y2 = YData(1,1) + scalefactor*abs(XData(1,2) - XData(1,1));
Y3 = YData(1,2) + scalefactor*abs(XData(1,2) - XData(1,1));
Y4 = YData(1,3) + scalefactor*abs(XData(1,2) - XData(1,3));
Y5 = YData(1,3) - scalefactor*abs(XData(1,2) - XData(1,3));
Y6 = YData(1,2) - scalefactor*abs(XData(1,2) - XData(1,1));

Xvect = [X1 X2 X3 X4 X5 X6];
Yvect = [Y1 Y2 Y3 Y4 Y5 Y6];

Lineimg = poly2mask(Xvect,Yvect,400,500);

问题在于,如果线条颠倒过来,它几乎会消失。现在我想到只绘制一行像素然后稀释它。问题是如何绘制线条。

2 个答案:

答案 0 :(得分:1)

我很抱歉给您带来不便。我个人很欣赏MATLAB的创始人,他从教学辅助工具开发工具箱,并与学生分享建立公司。 MATLAB的基本思想是构建数学模型。所以,我认为数学模型是关键。

我们继续讲述这个故事,我们将加载一个内置图并在其上画一条线。

I = imread('peppers.png');

然后,给出了三点。

x = [173 206 347];
y = [0 192 384];

我们考虑一条线是否可以通过这些点。如果您在平面中随机选择三个点,通常它们是非共线的。这被称为一般位置。但是,弧可以完成这项工作。我们用弧线拟合这些点。

Trial>> p = polyfit(x,y,1);

P是您想要的线的数学模型。我们即将绘制的线的X坐标是从零到521,等于该数字。

Line_x1 = [0 521];

数学模型p用于计算Y坐标。

Line_y1 = polyval(p,Line_x1);

现在我们有足够的信息来画线。

RGB = insertShape(I,'Line',[Line_x1(1) Line_y1(1) Line_x1(2) Line_y1(2)],'LineWidth',5);
imshow(RGB);

并不完全通过给定的点数;然而,从多项式曲线拟合的角度来看,它是最接近这些点的线。

enter image description here

答案 1 :(得分:0)

我们考虑一条线是否可以通过这些点。

如果你在一个平面中随机选择三个点,一般来说,它们是非共线的。这被称为一般位置。但是,弧可以完成这项工作。我们用弧线拟合这些点。

Trial>> x = [10 33 50];
Trial>> y = [50 30 9];
Trial>> p = polyfit(x,y,1);

P是您想要的线的数学模型。接下来是生成像素。假设我们希望像素的x坐标从十到十五变化。

x1 = linspace(10,50);

使用数学模型p,我们计算像素的y坐标。

y1 = polyval(p,x1);

现在,我们将生成的像素和给定的点一起绘制以查看结果。

plot(x,y,'o')
hold on
plot(x1,y1)
hold off

enter image description here

并不完全通过给定的点数;然而,从多项式曲线拟合的角度来看,它是最接近这些点的线。