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('提取的红苹果');
热门推荐
《哪吒2》里石矶娘娘是“济南制造”!技术突破展动画新高度
商品房买卖合同解除后,剩余贷款的还款责任如何处理?
各种咖啡的调配比例 拿铁咖啡比例怎么调 冰滴和冷萃咖啡怎么制作
乌蒙秘境:云南最大国家级自然保护区的生态密码
咨询工程师怎么免考两门?详解免试条件与申请流程
北京消防:爬野山多人被困!户外登山活动须加强安全防范
适合下班放松沉浸的10款必玩Switch游戏推荐
宁波二手房成交攀升,货币政策适度宽松助力楼市稳定
2025年宁波房价能否逆势上涨?
神奇的宇宙空洞是怎样形成的?牧夫座空洞直径长达3.3亿光年
世界弹射物语前期配队攻略:火水属性队长推荐及队伍搭配思路
POS机收款人是谁?如何确定收款人身份?
量子科技从实验室迈向市场:应用前景广阔,商业化仍有距离
分析 | 2025年人民币汇率怎么走?为何人民币有两个汇率?
如何对外包团队进行有效的管理
2024年退休,个人的平均缴费指数怎么算?最后缴300%,有啥作用?
左眼看到冷色,右眼看到暖色的原因是什么
三叉神经炎的治疗方法是什么
煮苹果水走红,中医专家:这些人群不宜饮用
职场礼仪:向领导赠送鲜花的注意事项与技巧
送红包时该注意什么?从双手奉上到收礼礼仪的完整指南
AGI是什么?谷歌DeepMind正式公布AGI的六大等级和原则!
抓住孩子语言发育的黄金期
《古兰经》编撰和成书的历史
那个数字寓意最好1到9
如何理解投资者的行为动机?这种理解对投资决策有何帮助?
国家卫健委最新统计公报:我国人均预期寿命达到78.6岁
拿到驾照不开车, 一年后也算过了实习期吗? 这样实习期有什么用?
实习驾驶证到期了怎么换证
广西螺蛳粉的历史及起源