如何在matlab中将图像的像素坐标x和y转换为图像?
我有一组向量x和y,其中包含图像的像素坐标。我需要用Matlab把这些值转换成图像。如何使用这些值?Αnd哪个函数最适合它?我使用的代码是:如何在matlab中将图像的像素坐标x和y转换为图像?,matlab,image-processing,coordinates,pixel,Matlab,Image Processing,Coordinates,Pixel,我有一组向量x和y,其中包含图像的像素坐标。我需要用Matlab把这些值转换成图像。如何使用这些值?Αnd哪个函数最适合它?我使用的代码是: I = imread('D:\majorproject\image\characters\ee.jpg'); imshow(I) BW =im2bw(I); BW=imcomplement(BW); imshow(BW) dim = size(BW); col = round(dim(2)/2)-90; row = find(BW(:,col
I = imread('D:\majorproject\image\characters\ee.jpg');
imshow(I)
BW =im2bw(I);
BW=imcomplement(BW);
imshow(BW)
dim = size(BW);
col = round(dim(2)/2)-90;
row = find(BW(:,col), 1 );
boundary = bwtraceboundary(BW,[row, col],'N');
imshow(I)
hold on;
plot(boundary(:,2),boundary(:,1),'0','LineWidth',3);
BW_filled = imfill(BW,'holes');
boundaries = bwboundaries(BW_filled);
for k=1:10
b = boundaries{k};
plot(b(:,2),b(:,1),'g','LineWidth',3);
end
从中我得到了坐标值。
谢谢。由于您没有提供像素的强度,我假设您希望创建一个二值图像,您可以轻松地完成以下操作-
img=[];
for k=1:length(x) //assuming the length of x and y are same
img(x(k),y(k))=1;
end
imshow(img);
<>避免使用循环并考虑使用索引来代替输出图像。code>sub2ind将
(x,y)
坐标转换为线性索引,以便您可以使用单个命令索引所需的内容:
img = false(size(I));
img(sub2ind(size(I), y, x)) = true;
imshow(img);
此处x
和y
表示列和行坐标,假设它们从1开始。如果x
和y
是行和列坐标,只需交换输入参数:
img = false(size(I));
img(sub2ind(size(I), x, y)) = true;
imshow(img);
另外,I
是用imread
读入的图像。由于您希望图像的尺寸与I
相同,我们当然可以利用这一事实创建输出图像
或者,您可以使用直接索引到矩阵中,并将位置设置为1,然后转换回
完整的逻辑矩阵:
img = sparse(y, x, true, size(I,1), size(I,2));
%img = sparse(x, y, true, size(I,1), size(I,2)); %// Use this if x is row and y is column
img = full(img);
imshow(img);
要形成图像,通常需要一组强度值,以及图像的尺寸(以像素为单位)(高度和宽度)。你说你只有“坐标”。。。这本身没有意义。你能详细说明一下吗?请说明阵列的大小,因为这可能会有所帮助,以及它应该显示的尺寸,如果你知道的话。嗨,我没有该尺寸的强度值。并且需要二进制格式的图像。谢谢你好,是的,我需要以二进制格式输出图像。我不明白为什么要给img函数分配1。二值图像由“0”和“1”组成。通过你的问题,我假设(x,y)中的坐标是像素为1的位置的坐标。因此,在(x,y)指定的所有坐标上,我将1分配给img
。PS:img
不是一个函数,它只是一个简单的矩阵。我同意这是正确的方法。为了提高效率,变量img应该预先分配为:img=false(H,W),其中H和W是最终图像的高度和宽度。另外,应该写入'true'值,而不是将1写入img的元素。但是赋值1将如何取回我的图像?分配1不显示任何内容。我包括两个for循环。在imshow(img)
之前,doimg=img==1
。我想这就行了@USSR55942-我很高兴。如果你不再需要帮助,请考虑接受我们的答案。