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('提取的红苹果');
热门推荐
最安全的水杯材质
水杯材质与健康的科学解析
MBTI团队中的角色-mbti人物
成都地铁30号线一期完成热滑试验,预计2025年底至2026年开通
成龙70岁生日感慨能老是幸福,拍戏路透白发多,多少巨星都被岁月染白了头
股票人气和买卖意愿指标ARBR使用技巧
股市成交量深度剖析:意义、作用、判断与应用全解析
美股大事!今天,开始实施!
筹划应对战争 欧洲国家心态复杂
《逆商》:逆境中的智慧与力量
DR、CT、MRI影像检查的区别与注意事项
什么是4K分辨率?和HDR区别是什么?
鼠鱼吃藻吗,还吃什么食物
增程器的正常使用寿命受哪些因素影响
80多年过去,红军长征时踏过的那片“吃人”草原,如今还危险吗?
广西旅游攻略:自由行的绝美指南
中策橡胶IPO卡壳,仇建平A股“第四子”难落
拥抱、握手、抚摸、按摩…提升幸福感可以很简单
糖尿病患者喝牛奶、奶粉会升血糖?营养专家给出正确选择建议
树葬回归自然的永恒礼赞
年轻人的八大创新床设计:从悬浮床到气垫床,告别传统床架
根据流体流量和管道允许压力降,计算选择合适的管径
管道设计需考虑哪些因素?
藏獒是怎么来的 历史上藏獒的由来
产科和妇科的区别
房屋安全检测费最低两万!各街镇标准存差异,农村自建房商户遇办证难题
房屋安全检测费最低两万!各街镇标准存差异,农村自建房商户遇办证难题
雾的形成条件与类型全解析
惊恐障碍病因介绍
Conda + JuiceFS :增强 AI 开发环境共享能力