matlab 彩色图片分解,MATLAB 彩色图像分割
【实例简介】
基于MATLAB彩色图像分割,采用聚类算法,MATLAB工具
(1)利用RGB空间到LAB空间转换公式(1)-(9);
五· Kmean的聚类算法步骤:
(1)读入图像数据,把彩包图像从RGB颜色空间转化到Lab空间。L表示亮度层
色度a表示图像像素落λred-gren轴,色度b*表示图像像素落入bue-ye1low
轴
(2)根据图像颜色分布选取聚类数目p,山于一般图像的主颜色有3-4个,所以选取
k=3
(3)假设图像像素个数为m*n,任取聚类中心C;(i=1,…,3)分别为像素最大值、
最小值、(最大值+最小值)、2,并将图像像素X(jm*n)按照最小距离准则分配
给任个聚类中心,使其满足下式
nix -clb
(4)按照下式修正聚类中心的值,式中q1(i=L,…,3)为某类像素的个数
∑x;ED1X
q
(5)将图像中的全部像素按照新的中心重新聚类,重复(3)(4)直至聚类结果不再
变化
(6)用3种不同颜色标记像素所属类别,牛成颜色聚类索引图
(7)从颜色聚类索引图中选出某一类,将原图像中该类以外其它位置设为0,这样得
到3幅区域分割图像;
8)合并区域分割图与显著图SM。若区域分割图最大程度包含了图像的显著点,则
对该分割图进行目标轮廓提取、膨胀、腐蚀和区域填充等运算形成感兴趣区标记
图,寻找标记图中值为0的像素点,将其在原图中的r、g、b值设为0,从而提
取图像的感兴趣区。
六·改进 Kmean的聚类算法步骤
图像分块理论:凵知图像大小为(320*213,3维),因此图像分块为【行320=16*20,列
(213=3*71)】分块大小为20*71,有3*16-48块。对分块后的图像进行 Kmean运算,计算
方法与上述方法一致,只是图像大小改变
七·实验程序流程图与实验代码:见附录一
开始
开始
读图
提取R、G、B分量
读图
KG空间转换为LAB空间
图傻分块
[燙取a分量组成新短阼A
聚类中心
对每块图像进行RGB
空间转换为LAB空间
设定初始误差上限
迭代次数上限
进行K均伯运算没有达到
对每决图像进行K
均值聚类计算
是否达到迭代次数上限
护接分块图像
计算迭代误差
误差不满足条件
图像边缘处理
选出原图属于同一类的
像素点,将其它点置1/0
显示结果
显示结果
结束
(结束
图1.实验程序流程图
八·实验结果分析与讨论:
为对比改进的K均值聚类算法与传统K均值聚类算法,实验从三个方面来进行验证:聚
类算法运行时间、分块效应、图像分割效果。
1)聚类算法运行时间:K均值算法是一种迭代过程,迭代次数能直接影响收敛速度快
慢,因此自适应的初始化聚类中心能在一定程度上降低算法的收敛速度。
改进型 Kmean算法图像分12块传统 Kmean算法
迭代3次数所需时间|14.8004 seconds
113. 324301 seconds
迭代15次数所需时间40.303625 seconds
144.801367 seconds
表1.对比不同迭代次数需要的时间
图像分48块
图像分12块
图像分3块
迭代3次数所需时间14.46503
14.229365
21.305810 seconds
seconds
seconds
迭代15次数所需时间1.195131
10.976963
18. 703379 seconds
seconds
seconds
表2.对比相同迭代次数图像分不同大小需要的时间
(2)图像分割效果
①·传统K均值聚类算法的对比(均迭代15次
利用灰度图像特性,将分割结果显示在一嘔图像中:
图2.分割结果显示在一幅图像
分割区域
分割区域二
分割区域三
图3.图像没有分块,聚类中心随机选择
利用传统的聚类算法对图像分割结果如图3,可以将图像分割为天空,背景,目标,从
分割效果看,可以实现彩色图像分割,但是分割后图像目标出现很多不连续点,可以进行区
域生长技术对结果进行优化。
分割区域
分害区域二
分割区域三
昏
图4.图像没有分块,聚类中心选择最大值、最小值、(最大值+最小值)
②·改进K均值聚类算法的对比(迭代次数为3):
分割区域
分割区域二
分割区域三
可
藏学馨
图5.图像分为48块,大小为20*71
将图像先分为48块后进行聚类运算,分割结果不理想,图像出现很多空白区域,因为
图像分割的太小,每一小块的聚类中心几乎都不一样,运算结果也会不一样,最后拼接图像
时,会出现严重的块效应现象。
分割区域一
分割区域二
分割区域三
图6.图像分为12块,大小为80*71
分割区域一
分割区城二
分割区城三
图7.图像分为3块,大小为320*71
改变图像分块大小,依然会出现分块现象,这与聚类中心的选择有密切关系。分块太小
分割效果,不好,产生很多离散区域;分块太大,会产生快效应。
九·实验心得
刚开始编写程序的时候,不知道怎么显示聚类结果,认为需要将分割后的LAB彩色信
息分量转换到RGB,将图像进行复原处理。尝试编与出现,发现遇到的困难很多,LAB怎么
转换到RGB空间,因为转换公式都是近似的,那么在不断转换图像时会有失真现象。后来认
为只要记录图像的空间坐标信息就可以解决问题,尝试编程后,达到预期效果。另外,怎么
在一幅图像中显示分割的三个结果也是一个问题,起初给三个聚类区域分别赋予0、125
255三个数,结果只有黑白,后来在知道 matlab中图像灰度值只有0-1的范围。
应用iat如b的cat函数减少了操作量。由于时间有限,木实验只是对特定的一幅图像
且大小必须为(320*213)进行了分割对比,应该多进行几个对照实验实验,完善实验结论
聚类方法的鲁棒性不好,只能适用于某一些特定的场合,限定了图像的大小,对」一般
的变换多样的条件表现出有限的能力(对比不同图像分割能力)。
扩展思维:分割在其他变换域效果如何?还需要进行验证
参考文献:
《彩色图像处理关键技术研究》韩晓微20050101,东北大学
《视觉注意计算模型的研究及其应用》陈嘉威指导老师周昌乐20090104
《彩色图像分割方法综述》马英辉,韩焱中北大学山西无损检测技术工程中心2005111
《彩色图像分割方法的研究与实现》王婷婷山尔大学20050501
《基于视觉注意机制的感兴趣区域提取方法》安福定,何东健西北农林科技大学201201
附录一:
(1)对图像没有分块,聚类中心随机选择;
file name- input(请输入图像文件路径:','s);
I rgb= imread (file name)
Irgb-im2 double(Irgb);%双精度
R=lrgb(∷,;1)
G=Irgb(:,;,2)
B=Irgb(:,:,3)
LM, N= size(r)
T=0.008856;
RGB=reshape(R,, s): reshape(G, 1, s): reshape(b, 1, s)
MAT=[0.4124530.3575800.180423;0.2126710.7151600.072169;0.0193340.119193
950227]
XY7=MAT半RGB
Ⅹ=XYZ(1,:)/0.950456
Y-XYZ(2,;)
Z=XYZ(3,:)/1.088754
XT=X> T
ZT
fX-XT.*K.(1/3)+(XT),*(7.787,*X+16/116)
Y3=Y.^(1/3
rY=YT.*Y3+(YT),*(7.787.*Y+16/116);
1.=YT.*(116*Y3-16.0)+(YT).*(903.3米Y)
Z=T.*Z.(1/3)+(ZT).*(7.787.*Z+16/116)
a=500*(fX-fY)
b=200*(fY-fZ)
L- reshape(L, M, N)
a= reshape(a, M, N)
reshape(b, M, N)
》>aa= reshape(a,MN,1);%转换成一维数组,需在∵维计算欧式距离,所以没必要转为一维
空间
bb=reshape(b, M=\, 1)
A=Laa bb
Ln, p]-size(a)
k=3
center=ones(k, pI1)
A
+1)=(
为A多出来一列存储数据
for i=l: k
center(i,: =A(i,:
为选择A的前三个作为聚类中心
old= center;%仔储旧的聚类中心,与之后的做比较
for i=l: n
for j=l: k
dist(i, j)=sum((A(i,: )-center(j: )).2
dist(i,: )
A(i,p+1)-ind;%存储下标
en
counter=o
counter12=0
counter13=0;%计算每个聚类中心有多少元素
for i-1: M*N
if A(i, p1)==1
counterll=counterll+1
center(1,: =A(i,: )+center(1,:
f a(
nterl2=counterl2+l
center(2,: ) -A(i,: )+center(2,
fA(i,p+1)=-3
counterl3=counter 13+1
center(3,:)=A(i,;)+ center(3,:);%属」一个聚类中心的数据进行叠加,
center(1,: )=center(1,: )/counterll
center(2,:)= center(2,:)/ counter12;%属于一个聚类中心的数据,重新计算聚类中心
center(3
center
(3,: )/counter13
forw=1:15%最大迭代次数为15次
fo
eror=sum(( center(i,:)-old(i,;)).2);%计算迭代误差
if error o. 000001
else
for t=l: n
dist(t, j)-sgrt(sum((A(t,: )-center(j,: )) 2)
en
m, ind]=min(dist(t,: )
A(t,p+1)=ind;%存储下标
counter21=0
counter22=0
counter23=0
for i=1: M:N
Lf A(i, pI1)=1
counter21=counter21-1
center(1,: ) -A(i,: )+center(1,:
if A(i, p+1)-2
counter22=counter 22+l
center (2,: =A(i,: )+center(2,
end
fA(i,p+1)=3
counter23- countcr23+1
center (,: =A(i,: ) center(3,
end
en
center(1,: ) =center(1,: )/counter21
center(2,: )=center(2,: counter22
center(3,: =center(3,: /counter23
end
A1-A;‰%显小结果
A2=A;
A3=A
A4-A
A5=A
A6=A
fork=1:M米N
irA1(k,p+1)=1
A1(k,1:2)=1;%0背景用黑色表示。1背景用白色
en
Al=reshape(al(:, 1),M, N): %a Fl
fork=1:M水N
fA2(k,p+1)
A2(k,1:2)=1;
end
A2-reshape(A2(:, 1), M, N)
for k=l: KN
if A3(k, pI1)=3
A3(k,1:2)=1;
end
A3=reshape(A3(:, 1),M, N)
for k=1: M:+N
【实例截图】
【核心代码】
matlab 彩色图片分解,MATLAB 彩色图像分割相关推荐
- 用SVD压缩彩色图片(MATLAB代码)
Write a MATLAB program to perform color image compression using singular value decomposition (SVD). ...
- 克劳特法matlab,经验模式分解matlab
EMD分解的matlab程序 %此版本为 ALAN 版本的整合注释版 function imf = emd(x...(x1) %当标准偏差系数 sd 大于 0.1 或 x1 不是固有模态函数时,分量终 ...
- matlab裁剪图片边框,MATLAB复制图片时边框大的问题
当使用MATLAB画图时,需要将图片复制到word中,会发现图片有一个白色的边框,在论文的排版中是一个影响美观的问题 例如: >> x = 0:10; >> y = sin(x ...
- matlab读取图片亮度,Matlab中使用imagesc函数显示的亮度图像怎么和原图像的大小不一样?...
在matlab 2006上写的两个函数,这两个函数的调用格式为: 读DICOM图像数据: X = read_dicom(filename) 这个函数的作用是从filename所指定的文件中读取图像数据 ...
- matlab 转换图片格式,Matlab实现图片格式转换 pgm转jpg等
在Matlab下,转换图片格式相对比较容易,本文以 PGM 转 JPG 为例,贴出示例程序: % 将pgm图片批量转换为jpg图片 function [ ] = pgm2jpg( ) % 读取指定目录 ...
- matlab进行图片修补,Matlab基于样本的图像修补方法代码的一些问题!
% Compute confidences along the fill front------沿着填补前沿计算自信度 for k=dR' Hp = getpatch(sz,k); q = Hp(~( ...
- matlab水果图片,基于MATLAB的水果识别的数字图像处理教程.docx
基于MATLAB的水果识别的数字图像处理教程 图像处理(报告) 题目: 基于MATLAB的水果识别的数字图像处理 指导教师: 职称: 教授 学生姓名: 学号: 专 业: 院(系): 完成时间: 201 ...
- 如何用matlab优化图片,关于MATLAB图像分析在优化飞行轨迹方面的作用分析
在看到冥王星萌萌爱意前一年,"新视野"号探测器对机载相机拍摄的照片进行图像处理以实现优化飞向冥王星的轨道,NASA称这一过程为Opnav(opticalnavigation,光学导 ...
- matlab水果图片,基于matlab的水果识别的数字图像处理
基于matlab的水果识别的数字图像处理 图像处理(报告)题目: 基于 MATLAB 的水果识别的数字图像处理 指导教师: 职称: 教授 学生姓名: 学号:专 业: 院(系): 完成时间: 2016 ...
- matlab 将图片立体化,MATLAB基础(五)——绘制立体图
五.绘制立体图 基本XYZ立体绘图命令 在科学目视表示(Scientific visualization)中,三度空间的立体图是一个非常重要的技巧.本文将介绍MATLAB基本XYZ三度空间的各项绘图命 ...
最新文章
- 让Windows7运行速度更快的BIOS优化设置教程
- R语言ggplot2可视化:通过水平半小提琴图(Horizontal Half Violin Plots)和抖动数据点( jittered data)可视化雨云图(Rain Cloud plots)
- 实践基于REST风格的Webservice(PHP,C#)
- 算法题目——Problem A 二进制(北邮机试)
- OC本学习笔记Foundation框架NSString与NSMutableString
- 三诺+n20g+微型计算机,原来是他?揭秘三诺永恒系列开山鼻祖
- CodeForces - 1013B And 与运算暴力
- javascript内存泄露
- 【手写数字识别】基于matlab GUI贝叶斯最小错误率手写数字识别【含Matlab源码 308期】
- oracle永久表设置,Oracle 表空间简单管理永久表空间
- 云计算机房的建设预算,射阳高级中学云计算机房建设预算.doc
- android 渐变歌词,Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变
- 如何查询电脑本机出厂序列号
- 解决vue和vue-template-compiler版本不一致问题
- TIKTOK视频:搬运视频技巧的这几点你知道吗?
- 《牧羊少年的奇幻之旅》-保罗 柯艾略
- mybatis-plus和mysql
- 计算机视觉人脸检测与识别
- node.js调试 BY:色拉油啊油
- 百度电子地图自定义marker图标
热门文章
- python做事务所审计收费标准_会计师事务所审计收费标准?2019审计报告收费标准...
- 推荐16本平面设计书籍,学平面设计必看的书不要错过哦
- 深度定制游戏引擎实现云服务器的非线性增长
- java cap_【Java】分布式CAP原则
- win10安装Docker Desktop完成之后打开一直显示Docker failed to initialize
- java 16进制 负数_Java随笔:小心16进制负数
- 计算机应用与物流的关系,电子商务与现代物流关系
- 用ENSP配置ospf
- 散户通过a股量化数据接口实现自动化实盘交易主要方式有哪些?
- tar 压缩文件夹到指定的目录