嗨,我正在试着画一幅画。
我有三个矩阵:
矩阵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)
有没有一个函数可以用来绘制这个,或者我必须实现这个?任何如何实现这一点的建议都将不胜感激。谢谢。
发布于 2013-07-21 14:29:00
这是一个完整的图像吗?A,B和C是一维的,对吧?如果是这样的话,您可以使用Matrix C的值在相应的索引处创建一个2D数组,将其转换为图像并显示这些图像。
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]);
https://stackoverflow.com/questions/17769530
复制相似问题