Matlab图像处理——基于SLIC超像素分割实现感兴趣区域提取

一、主要步骤

1.设定超像素的数量,利用MATLAB的超像素分割算法获得超像素的标签和数量。

2.通过绘制原图像并用边界标记超像素,直观地了解超像素的分布。

3.计算每个超像素的均值颜色,并根据像素计数得到最终的均值颜色。

4.通过颜色相似性阈值,建立超像素之间的连接关系,并使用连通分量算法获得新的超像素标签。

图片

二、代码实现


clear
clc
% 读取图像
inputImage = imread('1.jpg');
% 将图像转换到LAB色彩空间
labImage = rgb2lab(inputImage);
% 设置超像素的数量
numSuperpixels = 2000;
% 使用超像素分割算法获取超像素的标签和数量
[L, N] = superpixels(labImage, numSuperpixels);
% 显示原图像,并用边界标记超像素
figure;
BW = boundarymask(L);
imshow(imoverlay(inputImage, BW, 'cyan'), 'InitialMagnification', 67);
% 初始化存储均值颜色和像素计数的数组
meanColors = zeros(N, 3, 'double');
pixelCount = zeros(N, 1);
% 计算每个超像素的均值颜色和像素计数
for row = 1:size(labImage, 1)
    for col = 1:size(labImage, 2)
        label = L(row, col);
        pixel = squeeze(double(labImage(row, col, :)))';
        meanColors(label, :) = meanColors(label, :) + pixel;
        pixelCount(label) = pixelCount(label) + 1;
    end
end
% 计算每个超像素的最终均值颜色
for i = 1:N
    if pixelCount(i) ~= 0
        meanColors(i, :) = meanColors(i, :) / pixelCount(i);
    end
end
% 设置颜色相似性阈值
colorSimilarityThreshold = 4;
% 创建一个空的图表示超像素之间的连接关系
G = graph;
% 构建图,连接颜色相似的超像素
for i = 1:N-1
    for j = i+1:N
        colorDifference = norm(meanColors(i, :) - meanColors(j, :));
        
        if colorDifference < colorSimilarityThreshold
            G = addedge(G, i, j);
        end
    end
end
% 使用连通分量算法获得新的超像素标签
bins = conncomp(G);
% 将原始超像素标签映射到新的超像素标签
newLabels = zeros(size(L));
for row = 1:size(labImage, 1)
    for col = 1:size(labImage, 2)
        label = L(row, col);
        newLabels(row, col) = bins(label);
    end
end
% 显示结果,包括带有新超像素边界的图像和填充后的二值图像
figure;
subplot(1, 2, 1);
BW = boundarymask(newLabels);
imshow(imoverlay(inputImage, BW, 'cyan'), 'InitialMagnification', 67);
subplot(1, 2, 2);
BW_filled = imfill(BW, 'holes');
imshow(BW_filled);

图片

图片

图片

三、参数设置的影响

1.超像素数量(numSuperpixels)

影响分割粒度:参数值越大,生成的超像素数量越多,分割的粒度越细致。反之,值越小,生成的超像素数量越少,分割的粒度越粗糙。

计算复杂度:越大的值会导致算法需要处理更多的像素,因此可能增加计算的复杂性。选择合适的值既能保留图像细节,又能控制计算开销。

对噪声和纹理的敏感性:过大或过小的值可能会导致对噪声或图像纹理过度敏感,影响最终结果的质量。

2.颜色相似性阈值(colorSimilarityThreshold)

影响连接超像素的条件:阈值越小,颜色相似性要求越高,连接的超像素之间颜色差异越小。反之,阈值越大,颜色相似性要求越低,连接的超像素之间颜色差异可以更大。

影响分割的松紧度:较小的阈值可能导致过度分割,生成大量细小的超像素。较大的阈值则可能导致过度合并,使得相似但不完全相同的区域被连接成一个超像素。

影响分割结果的视觉效果:适当的颜色相似性阈值可以使得分割结果更符合人眼的感知,同时保留图像中的结构和纹理。

为了找到最佳的参数组合,通常需要通过试验和调整,观察分割结果并选择最适合特定应用场景的参数。实际应用中,可能需要根据具体问题的要求来调整这两个参数,以达到最佳的图像分割效果。

最后

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真…希望能帮到你!

在这里插入图片描述

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值