MATLAB数字图像处理:红苹果的目标与背景分割与提取
创作时间:
作者:
@小白创作中心
MATLAB数字图像处理:红苹果的目标与背景分割与提取
引用
CSDN
1.
https://blog.csdn.net/2202_75442297/article/details/145517544
在数字图像处理领域,目标与背景的分割是一项基础且重要的技术。本文将以红苹果的图像处理为例,详细介绍如何使用MATLAB实现目标与背景的分割与提取。通过本案例的学习,读者可以掌握图像消噪、目标分析、阈值分割等关键技术,并能够应用到实际的图像处理项目中。
主要要求
提取红苹果
建议方法
- 将已知图像进行消噪处理
- 对彩色图像进行目标和背景分析
- 通过阈值法将图像进行分割
- 提取目标
难点
- 确定目标区域的特征
- 边界修复与区域分割
实验结果
原始图像:展示了包含红苹果以及背景场景的原始画面,并且红苹果与背景的颜色、纹理等特征相互交织,不易直接区分。
整体上看,添加高斯噪声的图像会变得 “模糊” 且带有一些类似 “颗粒” 的效果,原本清晰的细节部分会被噪声干扰,看起来不再那么平滑和锐利,图像质量有所下降。
对添加高斯噪声后的图像的 RGB 三个通道分别进行高斯滤波,其主要目的是减少之前添加的高斯噪声对图像造成的干扰,尽可能恢复图像原本的清晰度和质量。整体来看,经过高斯滤波处理后的图像(即 denoisedImage)相较于添加噪声后的图像(noisyImage),视觉上会变得更加清晰和平滑,之前因噪声产生的那些 “颗粒感” 以及图像细节处的模糊现象会得到一定程度的改善。
提取的红苹果:最终提取出的红苹果图像以彩色形式呈现,其中苹果区域显示为原图像中的颜色,背景为黑色。整体上能够大致看出红苹果的形状和位置,但在苹果的边缘部分,尤其是与背景颜色过渡较为自然的区域,存在一些模糊和不精确的现象,这是由于边界修复不够完善以及区域分割不够精准导致的。
自行拍摄的图片添加椒盐噪声以及去噪之后的图像:
MATLAB代码实现
椒盐噪声处理
% 读取图像(确保图像文件名为apple.jpg且在当前Matlab工作目录下,或者给出完整路径)
image = imread('apple.jpg');
% 步骤一:添加椒盐噪声
% 设置椒盐噪声密度(可根据实际情况调整噪声强度,取值范围0到1)
noiseDensity = 0.02;
noisyImage = imnoise(image, 'salt & pepper', noiseDensity);
% 分离添加噪声后图像的RGB三个通道
noisyRedChannel = noisyImage(:, :, 1);
noisyGreenChannel = noisyImage(:, :, 2);
noisyBlueChannel = noisyImage(:, :, 3);
% 对每个通道分别进行中值滤波,使用3×3的滤波窗口(窗口大小可按需调整)
denoisedRedChannel = medfilt2(noisyRedChannel, [3 3]);
denoisedGreenChannel = medfilt2(noisyGreenChannel, [3 3]);
denoisedBlueChannel = medfilt2(noisyBlueChannel, [3 3]);
% 将滤波后的三个通道重新合并为彩色图像
denoisedImage = cat(3, denoisedRedChannel, denoisedGreenChannel, denoisedBlueChannel);
% 步骤二:将彩色图像从RGB空间转换为HSV空间
hsvImage = rgb2hsv(denoisedImage);
% 分离HSV三个通道
hue = hsvImage(:, :, 1);
saturation = hsvImage(:, :, 2);
value = hsvImage(:, :, 3);
% 步骤三:阈值法图像分割(调整合适的HSV阈值)
% 色相(Hue),进一步微调色相阈值范围,使其更贴合红苹果颜色特征
redHueLower = 0;
redHueUpper = 0.1;
redHueMask1 = (hue >= redHueLower) & (hue <= redHueUpper);
redHueLower = 0.9;
redHueUpper = 1;
redHueMask2 = (hue >= redHueLower) & (hue <= redHueUpper);
redHueMask = redHueMask1 | redHueMask2;
% 饱和度(Saturation),适当提高饱和度阈值,让苹果颜色更纯的区域被选中
saturationThreshold = 0.3;
saturationMask = saturation >= saturationThreshold;
% 明度(Value),根据图像实际亮度情况微调明度阈值
valueThreshold = 0.2;
valueMask = value >= valueThreshold;
% 综合三个通道的掩码得到分割掩码
segmentationMask = redHueMask & saturationMask & valueMask;
% 步骤四:目标提取
% 进行形态学开运算
se = strel('disk', 3);
openedMask = imopen(segmentationMask, se);
% 找到目标区域
[labeledImage, numRegions] = bwlabel(openedMask);
% 提取最大的连通区域作为红苹果
maxArea = 0;
maxLabel = 0;
for region = 1:numRegions
currentRegion = labeledImage == region;
area = sum(currentRegion(:));
if area > maxArea
maxArea = area;
maxLabel = region;
end
end
% 最终提取的红苹果目标图像
appleBinary = labeledImage == maxLabel;
imageDouble = im2double(image);
% 可以将二值图像转换回和原图像相同大小的彩色图像
extractedApple = zeros(size(image), 'double');
extractedApple(:, :, 1) = imageDouble(:, :, 1).* appleBinary;
extractedApple(:, :, 2) = imageDouble(:, :, 2).* appleBinary;
extractedApple(:, :, 3) = imageDouble(:, :, 3).* appleBinary;
% 显示结果
subplot(2, 3, 1);
imshow(image);
title('原始图像');
subplot(2, 3, 2);
imshow(noisyImage);
title('添加椒盐噪声后的图像');
subplot(2, 3, 3);
imshow(denoisedImage);
title('中值滤波后图像');
subplot(2, 3, 4);
imshow(segmentationMask);
title('分割掩码');
subplot(2, 3, 5);
imshow(extractedApple);
title('提取的红苹果');
高斯噪声处理
image = imread('apple2.jpg');
% 步骤一:添加高斯噪声
% 设置高斯噪声的均值和标准差
meanValue = 0;
stdDeviation = 0.05;
noisyImage = imnoise(image, 'gaussian', meanValue, stdDeviation);
% 分离添加噪声后图像的RGB三个通道
noisyRedChannel = noisyImage(:, :, 1);
noisyGreenChannel = noisyImage(:, :, 2);
noisyBlueChannel = noisyImage(:, :, 3);
% 对每个通道分别进行高斯滤波,使用3×3的滤波窗口
% 生成高斯滤波器,标准差设为1
h = fspecial('gaussian', [3 3], 1);
denoisedRedChannel = imfilter(noisyRedChannel, h, 'replicate');
denoisedGreenChannel = imfilter(noisyGreenChannel, h, 'replicate');
denoisedBlueChannel = imfilter(noisyBlueChannel, h, 'replicate');
% 将滤波后的三个通道重新合并为彩色图像
denoisedImage = cat(3, denoisedRedChannel, denoisedGreenChannel, denoisedBlueChannel);
% 步骤二:将彩色图像从RGB空间转换为HSV空间
hsvImage = rgb2hsv(denoisedImage);
% 分离HSV三个通道
hue = hsvImage(:, :, 1);
saturation = hsvImage(:, :, 2);
value = hsvImage(:, :, 3);
% 步骤三:阈值法图像分割
% 色相(Hue)
redHueLower = 0;
redHueUpper = 0.12;
redHueMask1 = (hue >= redHueLower) & (hue <= redHueUpper);
redHueLower = 0.8;
redHueUpper = 1;
redHueMask2 = (hue >= redHueLower) & (hue <= redHueUpper);
redHueMask = redHueMask1 | redHueMask2;
% 饱和度(Saturation)
saturationThreshold = 0.3;
saturationMask = saturation >= saturationThreshold;
% 明度(Value)
valueThreshold = 0.2;
valueMask = value >= valueThreshold;
% 综合三个通道的掩码得到分割掩码
segmentationMask = redHueMask & saturationMask & valueMask;
% 步骤四:目标提取
% 进行形态学开运算
se = strel('disk', 3);
openedMask = imopen(segmentationMask, se);
% 找到目标区域
[labeledImage, numRegions] = bwlabel(openedMask);
% 提取最大的连通区域作为红苹果
maxArea = 0;
maxLabel = 0;
for region = 1:numRegions
currentRegion = labeledImage == region;
area = sum(currentRegion(:));
if area > maxArea
maxArea = area;
maxLabel = region;
end
end
% 最终提取的红苹果目标图像
appleBinary = labeledImage == maxLabel;
imageDouble = im2double(image);
% 可以将二值图像转换回和原图像相同大小的彩色图像
extractedApple = zeros(size(image), 'double');
extractedApple(:, :, 1) = imageDouble(:, :, 1).* appleBinary;
extractedApple(:, :, 2) = imageDouble(:, :, 2).* appleBinary;
extractedApple(:, :, 3) = imageDouble(:, :, 3).* appleBinary;
% 显示结果
subplot(2, 3, 1);
imshow(image);
title('原始图像');
subplot(2, 3, 2);
imshow(noisyImage);
title('添加高斯噪声后的图像');
subplot(2, 3, 3);
imshow(denoisedImage);
title('高斯滤波后图像');
subplot(2, 3, 4);
imshow(segmentationMask);
title('分割掩码');
subplot(2, 3, 5);
imshow(extractedApple);
title('提取的红苹果');
热门推荐
伤残十级残疾人证的办理与使用指南
新疆摄影圣地推荐:南北疆精华摄影季节与地点
澳大利亚卖猫是否犯法?知乎回答分析
道教“封神榜”:大足石刻里这些神仙都是谁?
资产配置中的固定收益投资:实现稳定收益的策略
超频时如何监测CPU的温度和电压?
阴阳师SP红叶阵容攻略:以SSR茨木童子为核心的稳定输出阵容
怎么判断是平行眼还是交叉眼
C++的浅拷贝与深拷贝
影响中药质量的五大因素
牙龈红肿,出血?可能是牙周炎犯了!做好7个预防,守护牙周壁垒
股票市场中的举牌概念解读
按摩或艾灸这个穴位,能调养“后天之本”脾胃
贵阳新怡小区房屋开裂漏水,居民忧心忡忡,盼再鉴定
账单分期?我劝你三思!理性看待信用卡账单分期
合同诈骗的6种证据认定及诈骗130万不退赃的判罚
拥有22个A类学科,2024招生1330人,南科大综合评价面试题解读
肥胖者如何通过锻炼提高免疫力
代糖食品真能无限量地吃吗?
历史事件的解析:大意失荆州与败走麦城的联系与区别
大意失荆州的故事:关羽的教训与启示
在AI热下,如何保持独立思考:与算法共舞的智慧
信用卡货币兑换成本分析:如何降低手续费负担
注册会计师考试攻略:科目学习顺序、备考方式及科目搭配方案
轿车省油还是SUV省油?从多个维度解析燃油经济性差异
布洛芬与芬必得的区别
房屋质量纠纷解除合同:法律适用与实务操作指南
运动后如何科学补充营养?这份增肌饮食指南请收好
CuNi30Mn1Fe铁白铜的熔化温度范围及其应用
自制豆浆喝了中毒?只因提前关了火!多煮几分钟没毛病