图像分割(三)-RGB转HSV后图像分割方法

2024-06-20 17:52
文章标签 方法 图像 分割 hsv rgb

本文主要是介绍图像分割(三)-RGB转HSV后图像分割方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       常用彩色模型有RGB和HSV模型,有时候在RGB颜色空间进行背景分割比较困难的问题,转换为HSV模型然后对色调和饱和度图像进行处理会得到比较理想的处理结果,下面通过一个实例讲解该方法的MATLAB实现,该方法对其他图像检测也具有一定的参考价值。

主要步骤:读入RGB彩色图像,转换为灰度图像,并进行二值化,发现背景分割效果不好。故改变思路,先将RGB彩色图像转换为HSV图像,提取H(色调)和S(饱和度)分量,发现色调分量的灰度直方图具有比较明显的双峰特性且谷底平且宽,因此对其采用OTSU方法进行二值化,然后对其进行孔洞填充,取得了比较理想的图像分割效果。最后对原始RGB彩色图像分割的主要图像处理过程进行显示。

详细代码如下:

%RGB图像转HSV进行图像分割

clear all;

close all;

clc;

I=imread('h:\3.jpg');

Ir=I(:,:,1);

Ig=I(:,:,2);

Ib=I(:,:,3);

imshow(I);

Igray=rgb2gray(I);% 彩色图像转灰度图像 Gray=0.299*R+0.587*G+0.114*B

figure,imshow(Igray);

figure,imhist(Igray);%显示灰度直方图

obj=im2bw(Igray,graythresh(Igray));

figure,imshow(obj);

Ihsv=rgb2hsv(I);

figure,imshow(Ihsv);

Ih=Ihsv(:,:,1);%提取hue(色调)分量

figure,imshow(Ih);

figure,imhist(Ih);%显示色调分量的灰度直方图-发现其具有比较明显的双峰特性且谷底平且宽

imtool(Ih);

Is=Ihsv(:,:,2);%提取Saturation(饱和度)分量

figure,imshow(Is);

figure,imhist(Is);

imtool(Is)

%obj=imbinarize(Ih);

obj2=im2bw(Ih,graythresh(Ih));

figure,imshow(obj2);

obj2Fill=imfill(obj2,'holes');

figure,imshow(obj2Fill);

flower=cat(3,uint8(obj2Fill).*Ir,uint8(obj2Fill).*Ig,uint8(obj2Fill).*Ib);

figure,imshow(flower);

figure,

subplot(2,4,1),imshow(I),title('RGB彩色图像');

subplot(2,4,2),imshow(Igray),title('灰度图像');

subplot(2,4,3),imhist(Igray),title('Igray灰度直方图');

subplot(2,4,4),imshow(obj),title('二值图像');%分割效果差

subplot(2,4,5),imshow(Ihsv),title('HSV图像');

subplot(2,4,6),imshow(Ih),title('H图像');

subplot(2,4,7),imhist(Ih),title('Ih灰度直方图');

subplot(2,4,8),imshow(obj2Fill),title('二值图像');%分割效果好

%本程序在MATLAB 2018a检测通过

最后运行结果如下图所示:

原始图像:

如果觉得本文章对大家今后的编程有帮助,请点赞和收藏,谢谢!!!

这篇关于图像分割(三)-RGB转HSV后图像分割方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078840

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定