需要有关将像素从二进制图像绘制为稀疏图像的帮助
Need help regarding plotting the pixel from binary images to a sparse image
我有一张二值图像,我想使用 MATLAB 仅将前景像素绘制成稀疏图像。我知道必须知道前景图像(白色)的像素位置。为此,我遵循代码:
close all
clear all
original = imread('/gt_frame_2.bmp');
fig1 = figure(1)
[x y]=find([original])
此处使用的输入显示如下:
预期的稀疏图像将是这样的:
上图是通过 GIMP 生成的。只是为了了解稀疏图像的外观。它包含前景图像的像素。但是,并非所有像素都被绘制出来。
找到像素的 X Y 坐标后,我需要将其绘制到稀疏图像上。这是我迷路的地方,我不知道如何绘制稀疏图像。感谢任何形式的帮助。
你不需要 x-y,如果你只想选择一些像素子集,线性索引更容易。语法 1:step:end
是挑选向量或矩阵的子集的一种非常有用的方法。即使矩阵的大小不是 step
的精确倍数,它也能工作,例如在命令行中检查它的作用:
n = 1:5
n(1:3:end)
所以这是一个非常基本的方法:
n = find(I); % list of non-zeros
I2 = zeros(size(I)); % blank image of same size
I2(n(1:10:end))=1; % every tenth pixel
我们可以变得更复杂(认为这需要图像处理工具箱)。如果只有一个实体对象,请使用 bwperim
到 return 边界,然后用像素的随机子集填充:
I2 = bwperim(I);
% randperm for sampling without replacement
n2 = randperm(numel(n),floor(numel(n)/10);
I2(n(n2))=1;
我有一张二值图像,我想使用 MATLAB 仅将前景像素绘制成稀疏图像。我知道必须知道前景图像(白色)的像素位置。为此,我遵循代码:
close all
clear all
original = imread('/gt_frame_2.bmp');
fig1 = figure(1)
[x y]=find([original])
此处使用的输入显示如下:
预期的稀疏图像将是这样的:
上图是通过 GIMP 生成的。只是为了了解稀疏图像的外观。它包含前景图像的像素。但是,并非所有像素都被绘制出来。
找到像素的 X Y 坐标后,我需要将其绘制到稀疏图像上。这是我迷路的地方,我不知道如何绘制稀疏图像。感谢任何形式的帮助。
你不需要 x-y,如果你只想选择一些像素子集,线性索引更容易。语法 1:step:end
是挑选向量或矩阵的子集的一种非常有用的方法。即使矩阵的大小不是 step
的精确倍数,它也能工作,例如在命令行中检查它的作用:
n = 1:5
n(1:3:end)
所以这是一个非常基本的方法:
n = find(I); % list of non-zeros
I2 = zeros(size(I)); % blank image of same size
I2(n(1:10:end))=1; % every tenth pixel
我们可以变得更复杂(认为这需要图像处理工具箱)。如果只有一个实体对象,请使用 bwperim
到 return 边界,然后用像素的随机子集填充:
I2 = bwperim(I);
% randperm for sampling without replacement
n2 = randperm(numel(n),floor(numel(n)/10);
I2(n(n2))=1;