0

嗨,我正在尝试绘制图像。

我有三个矩阵:

矩阵 A:X 坐标

矩阵 B:Y 坐标

矩阵 C:图像灰度

例如:

A = [1, 1;     B = [1, 2;       C = [1, 2;
     2, 2]          1, 2]            3, 4]

我将在 X(1), Y(1) 处绘制一个值为 C(1) 的点。值 1 绘制在 (1,1) 值 2 绘制在 (1,2) 值 3 绘制在 (2,1) 值 4 绘制在 (2,2)

有没有可以用来绘制它的函数,还是我必须实现它?任何建议如何实现这一点将不胜感激。谢谢你。

4

1 回答 1

0

是全图吗?A、B、C 是一维的,对吧?如果是这样,您可以在相应索引处使用 Matrix C 的值创建一个二维数组,将其转换为图像并显示图像。

img = zeros(max(max(B)),max(max(A)));   %initialize the new matrix
for i = 1:numel(C)                      %for each element in C
        img(B(i),A(i)) = C(i);          %fill the matrix one element at a time
end
img = mat2gray(img);                    %optional. More information in edit
imshow(img);                            %display the image

这假设最小索引值为 1。如果它是 0,则必须将 1 添加到所有索引。

我的 matlab 有点生锈,但应该可以。

编辑:有什么理由为什么它们是二维数组?无论如何,我已经更新了在任何一种情况下都可以工作的答案。

edit2:mat2gray将在 0 和 1 之间缩放您的值。如果您的值已经是灰度值,则这是不必要的。如果您的值在另一个范围内,但不一定包含最小值和最大值,您可以指定最小值和最大值。例如,如果您的范围是 0 到 255,请使用mat2gray(img,[0,255]);

于 2013-07-21T06:28:59.580 回答