文档章节

Matlab图像处理学习笔记(二):基于颜色的图像分割

c
 chenyn2014
发布于 2015/01/12 23:39
字数 670
阅读 1487
收藏 6

在实际处理图像时,经常需要对图像进行分割,然后提取ROI,本学习笔记记录怎么用Matlab实现基于颜色的图像分割。

基于颜色的图像分割实现简单,算法简洁,具有很好的实时性。

实现代码的过程中,我参考了Kyle Hounslow的objectTrackingTutorial.cpp,链接:https://www.youtube.com/watch?v=bSeFrPrqZ2A点击打开链接。颜色分割的数据范围及寻找最大连通区域的思想由师兄提供。

转载请注明出处:http://blog.csdn.net/u010278305。

本文涉及到的知识点如下:

1、RGB到YCBCR的色彩空间转换。

2、用各个通道的阈值对图像进行二值化。

3、形态学处理:腐蚀、膨胀、孔洞填充。

4、连通区域提取。

主要涉及到的Matla图形处理函数如下:rgb2ycbcr(色彩空间转换),roicolor(ROI二值化),imerode(腐蚀),imdilate(膨胀),imfill(孔洞填充),regionprops(区域属性)。这些函数的具体实现还是参考冈萨雷斯的《数字图像处理》,及matlab帮助文档,及论文引用。

不多说了,具体看代码,每一步都有注释.

%function:
%       基于颜色的图像分割
%       定位图片中的脸部区域
%referrence:
%       思路借鉴Kyle Hounslow写的objectTrackingTutorial.cpp。
%       Kyle Hounslow的原版代码链接:https://www.youtube.com/watch?v=bSeFrPrqZ2A
%       Y_MIN ,Y_MAX ,Cb_MIN , Cb_MAX ,Cr_MIN , Cr_MAX 的取值及寻找最大区域的想法由课题组师兄提供
%date:2015-1-8
%author:chenyanan
%转载请注明出处:http://blog.csdn.net/u010278305

%清空变量,读取图像
clear;close all
RGB = imread('images/girl.jpg');

figure('name','process'),
subplot(2,2,1),imshow(RGB),title('原始RGB'),

%convert frame from RGB to YCBCR colorspace(转换到YCBCR空间)
YCBCR = rgb2ycbcr(RGB);
whos,
subplot(2,2,2),imshow(YCBCR),title('YCBCR'),
%filter YCBCR image between values and store filtered image to threshold
%matrix(用各个通道的阈值对其进行二值化处理)
Y_MIN = 0;  Y_MAX = 256;
Cb_MIN = 100;   Cb_MAX = 127;
Cr_MIN = 138;   Cr_MAX = 170;
threshold=roicolor(YCBCR(:,:,1),Y_MIN,Y_MAX)&roicolor(YCBCR(:,:,2),Cb_MIN,Cb_MAX)&roicolor(YCBCR(:,:,3),Cr_MIN,Cr_MAX);
subplot(2,2,3),imshow(threshold),title('YCBCR二值化'),

%perform morphological operations on thresholded image to eliminate noise
%and emphasize the filtered object(s)(进行形态学处理:腐蚀、膨胀、孔洞填充)
erodeElement = strel('square', 3) ;
dilateElement=strel('square', 8) ;
threshold = imerode(threshold,erodeElement);
threshold = imerode(threshold,erodeElement);
threshold=imdilate(threshold, dilateElement);
threshold=imdilate(threshold, dilateElement);
threshold=imfill(threshold,'holes');
subplot(2,2,4),imshow(threshold),title('形态学处理'),

%获取区域的'basic'属性, 'Area', 'Centroid', and 'BoundingBox' 
figure('name','处理结果'),
stats = regionprops(threshold, 'basic');
[C,area_index]=max([stats.Area]);
%定位脸部区域
face_locate=[stats(area_index).Centroid(1),stats(area_index).Centroid(2)];
imshow(RGB);title('after'),hold on
text(face_locate(1),face_locate(2)-40,  'face','color','red');
plot(face_locate(1),face_locate(2), 'b*');
rectangle('Position',[stats(area_index).BoundingBox],'LineWidth',2,'LineStyle','--','EdgeColor','r'),
hold off

运行之后的效果如下图:



原始图片已上传。


© 著作权归作者所有

c
粉丝 6
博文 5
码字总数 3545
作品 0
成都
私信 提问

hjimce算法类博文目录 个人博客:http://blog.csdn.net/hjimce 个人qq:1393852684 知乎:https://www.zhihu.com/people/huang-jin-chi-28/activities 一、深度学习 深度学习(七十)darknet...

hjimce
2016/01/24
0
0
“我爱智能”原创性博客索引

不知不觉,博客也写出了一点小体系,新的阶段已经开始,未来希望再接再厉继续补充这一体系,在成长中写博客,在博客中成长,在此先做一个小的梳理,谢谢大家的支持。 一)关于深度学习系列 ...

on2way
2015/08/29
0
0
DIP课程大作业---图像分割

数字图像处理课程的大作业,要求如下: 图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主...

sirius_0
2015/06/07
0
0
[Python图像处理] 十九.图像分割之基于K-Means聚类的区域分割

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/89218513 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
04/11
0
0
OpenCV函数记录(一)

目录 前言 一直在怼图像处理,自然离不开,也就是说经常遇到一些常用的函数,记录下,提高效率! 学习!分享!感谢! OpenCV1.0.0函数 为0表示顶左结构,即图像的原点是左上角,如果为1为左下...

simonforfuture
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
9
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
5
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部