我正在寻找像 MATLAB 的超像素这样的函数。它会做接下来的事情:
[L,NumLabels] = superpixels(A,N)
计算二维灰度或 RGB 图像 A 的超像素。N 指定要创建的超像素的数量。该函数返回 L,一个 double 类型的标签矩阵,和 NumLabels,计算的实际超像素数。
问题是这是来自我正在翻译成 Python 的 MATLAB 函数:
function [llave_pixelada] = segmentacion(I,rsize,Spixel)
I_reducida = imresize(I,rsize);
[nfila,ncolum,~]=size(I_reducida);
[LSP,N] = superpixels(I_reducida,Spixel);
llave_pixelada = zeros(size(I_reducida),'like',I_reducida);
idx = label2idx(LSP);
for labelVal = 1:N
redIdx = idx{labelVal};
greenIdx = idx{labelVal}+nfila*ncolum;
blueIdx = idx{labelVal}+2*nfila*ncolum;
llave_pixelada(redIdx) = mean(I_reducida(redIdx));
llave_pixelada(greenIdx) = mean(I_reducida(greenIdx));
llave_pixelada(blueIdx) = mean(I_reducida(blueIdx));
end
end
这将图像 I 分段,缩放到 rsize,区域数量为 Spixels。MATLAB 的超像素返回一个标签矩阵,该函数稍后使用该函数对 idx 区域进行分组,结果是像素化图像(在给定的超像素数量 Spixels 的函数中)。
所以我想知道,如果没有类似 MATLAB 的 superpixel 函数,或者另一方面,类似于 MATLAB 的 superpixel 的函数可以做到这一点,是否可以减少上面的代码。
在此先感谢,我真的很感激。
(如果你想试试 MATLAB 的代码,rsize 从 0 到 1)。