gpt4 book ai didi

matlab - 在Matlab中以不同的矩阵保存想要的图像像素?

转载 作者:行者123 更新时间:2023-12-04 04:41:58 24 4
gpt4 key购买 nike

我是 matlab 和编程的新手。我有一个大小为 [640 780] 的 RGB 图像。现在假设我只需要那些红色值大于 100 的像素,剩下的像素较少我转换为 255。现在我想知道如何将这些需要的像素存储在不同的矩阵中,以便我可以直接使用这些值在原始 RGB 图片中导航以绘制 ROI ???

a = 1; b = 1;
maybe_red = RGB;
for i = 1:sizeim(1)
for j = 1:sizeim(2)
if RGB(i,j,1) > 100
red_trace_x(a) = i;
red_trace_y(b) = j;
b = b+1;
else
maybe_red(i,j,:) = 1;
end
end
a = a+1;
end

目前我正在存储 xy在单独的数组中。但我想知道如何存储 x,y单个矩阵中的值。

谢谢。!

最佳答案

下面生成一个掩码(与原始图像大小相同的逻辑数组),其中红色 channel 值大于 100 的像素存储为 1,其他像素存储为 0:

img= imread('peppers.jpg');
mask=img(:,:,1)>100;

您可以使用 mask 索引原始图像并使用 find 对其进行更改。确定与值为 1 的掩码像素对应的线性索引:
indlin=find(mask);
img2 = img;

您可以直接使用线性索引,例如使红色 channel 饱和:
img2(indlin) = 255;

或绿色 channel :
n = numel(img)/3;
img2(indlin+n) = 255;

从左到右,原始图像,蒙版,红色和绿色:

enter image description here

编辑

您可以检索数组下标 ixiy从线性指数与
[ix iy]=ind2sub(size(mask),indlin);

关于matlab - 在Matlab中以不同的矩阵保存想要的图像像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18759908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com