Rom*_* B. 0 matlab mask matrix indices matrix-indexing
我从图像中检索了所有非白色像素:
[ii, jj] = find(BlackOnWhite < 255)
Run Code Online (Sandbox Code Playgroud)
然后我尝试将这些像素坐标索引到矩阵:
image(ii, jj) = 0
Run Code Online (Sandbox Code Playgroud)
但是零没有出现在预期的位置.如何将零只放在由ii和jj([ii(1), jj(1)], [ii(2), jj(2)]等等)对指定的位置?
一种简单的方法是使用线性索引.这意味着使用单个索引遍历矩阵中的所有条目(向下,然后跨越).在你的情况下:
find一个输出.这给出了所需像素的线性指数.所以:
ind = find(BlackOnWhite < 255);
image(ind) = 0;
Run Code Online (Sandbox Code Playgroud)
您甚至可以删除find并使用逻辑索引.这意味着逻辑比较的结果直接用作索引:
ind = BlackOnWhite < 255;
image(ind) = 0;
Run Code Online (Sandbox Code Playgroud)
您的问题中显示的代码的问题是,ii并且jj被用作" 下标索引 ".这将选择由任意值和任何值形成的所有对,这不是您想要的.iijj
如果你有标ii和jj喜欢你的问题,你只需要选择相应的值从每标(而不是所有对),您可以使用sub2ind来转换为线性指标:
[ii, jj] = find(BlackOnWhite < 255);
image(sub2ind(size(image), ii, jj)) = 0;
Run Code Online (Sandbox Code Playgroud)