gpt4 book ai didi

matlab - bwconncomp 的第 N 个最大组件,包括背景

转载 作者:行者123 更新时间:2023-12-04 06:04:18 27 4
gpt4 key购买 nike

我的问题有两个部分。第一个是:

如何将背景作为组件包含在 bwconncomp 中函数,因为它的默认行为不包括它。

另外,这是我的另一个问题,如何根据使用 bwconncomp 得到的结果选择第 n 个最大组件.

目前我正在考虑这样的事情,但这不起作用:P

function out = getComponent(im,n)
CC = bwconncomp(im,4);
%image is an binary image here

numPixels = cellfun(@numel,CC.PixelIdxList);
sortedPixels = sort(numPixels,'descend');
w = sortedPixels(n);
[largest, index] = find(numPixels==w);
im(CC.PixelIdxList{index}) = 0;
out = im;

但这根本行不通。但我不太确定 CC.PixelIdxList{index}是的,它只是改变数组中的元素。我也觉得有点含糊,究竟是什么 PixelIdxList是。

最佳答案

  • 要查找背景,您可以对图像使用“not”操作
  • 'PixelIdxList' 不是你需要的。您需要 '区域'属性(property)。

  • function FindBackgroundAndLargestBlob
    x = imread('peppers.png');
    I = x(:,:,2);
    level = graythresh(I);
    bw = im2bw(I,level);
    b = bwlabel(bw,8);
    rp = regionprops(b,'Area','PixelIdxList');
    areas = [rp.Area];
    [unused,indexOfMax] = max(areas);
    disp(indexOfMax);
    end



    更新:
    你也可以用 bwconncomp 做到这一点:

    function FindBackgroundAndLargestBlob
    x = imread('peppers.png');
    I = x(:,:,2);
    level = graythresh(I);
    bw = im2bw(I,level);
    c = bwconncomp(bw,4);
    numOfPixels = cellfun(@numel,c.PixelIdxList);
    [unused,indexOfMax] = max(numOfPixels);
    figure;imshow(bw);
    bw( c.PixelIdxList{indexOfMax} ) = 0;
    figure;imshow(bw);
    end



    这将给出以下结果:
    Before
    enter image description here

    关于matlab - bwconncomp 的第 N 个最大组件,包括背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553955/

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