gpt4 book ai didi

matlab - 如何将 PixelList 转换为 mask ?

转载 作者:行者123 更新时间:2023-12-02 07:32:00 24 4
gpt4 key购买 nike

我有一个 PixelList 包含二进制掩码的所有设置像素。这看起来如下:PixelList: {[1447x2 int32]}

我如何有效地将此 PixelList 转换为维度为 dim 的二进制掩码?

简单的方法是:

mask = zeros(dim);
for i=1:length(pixellist)
mask(pixellist(i,2), pixellist(i,1)) = 1;
end

但这很慢。如何有效地做到这一点?

最佳答案

使用sub2ind获取非零位置的线性索引并一次性设置它们:

pixellist = PixelList{1}; % get the 1447x2 int32 array
mask = false(dim); % e.g. dim = [256 256]
mask(sub2ind(size(mask),pixellist(:,2), pixellist(:,1))) = true;

或者使用accumarray 更优雅的解决方案:

mask = accumarray(fliplr(pixellist),true,dim,@any,false)

如果没有重复元素,这可以简化为 accumarray(fliplr(pixellist),true,dim),并且上述语法对输出维度更明确。

关于matlab - 如何将 PixelList 转换为 mask ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20848050/

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