首页 > 解决方案 > Python中的MATLAB超像素函数?

问题描述

我正在寻找像 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)。

标签: pythonmatlabopencvscikit-imagesuperpixels

解决方案


推荐阅读