在实际处理图像时,经常需要对图像进行分割,然后提取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: