图像分割(三)-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

相关文章

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

python3 pip终端出现错误解决的方法详解

《python3pip终端出现错误解决的方法详解》这篇文章主要为大家详细介绍了python3pip如果在终端出现错误该如何解决,文中的示例方法讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下... 目录前言一、查看是否已安装pip二、查看是否添加至环境变量1.查看环境变量是http://www.cppcns

Linux给磁盘扩容(LVM方式)的方法实现

《Linux给磁盘扩容(LVM方式)的方法实现》本文主要介绍了Linux给磁盘扩容(LVM方式)的方法实现,涵盖PV/VG/LV概念及操作步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1 概念2 实战2.1 相关基础命令2.2 开始给LVM扩容2.3 总结最近测试性能,在本地打数据时,发现磁盘空

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1

使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案

《使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案》在SpringBoot应用中,我们经常使用​​@Cacheable​​注解来缓存数据,以提高应用的性能... 目录@Cacheable注解Redis时,Redis宕机或其他原因连不上,继续调用原方法的解决方案1

sql语句字段截取方法

《sql语句字段截取方法》在MySQL中,使用SUBSTRING函数可以实现字段截取,下面给大家分享sql语句字段截取方法,感兴趣的朋友一起看看吧... 目录sql语句字段截取sql 截取表中指定字段sql语句字段截取1、在mysql中,使用SUBSTRING函数可以实现字段截取。例如,要截取一个字符串字

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr