【图像分割】基于FLICM算法实现图像分割含Matlab源码
1 简介
聚类就是把具有相似性的事物区分开并加以分类。聚类分析是依据研究对象(样品
或指标)的特征,对其进行分类。其目标是:组内对象之间是相似的或是相关的,而不同组中的对象不相同或者是不相关的,聚类过程中要求分类准确,分类的过程和结果是可以重复的,但分类并不依赖于分析者的主观判断。聚类分析作为多元统计分析的方法之一,也是统计模式识别中的非监督模式识别的一个重要分支。
聚类可以看作是一种分类,用类标号从而创建对象的标记,多数情况下我们对于分
类识别的对象是未知的,因此聚类分析通常也被称为无监督分类。与此相反,用一个由类标号已知的对象建立的模型,对新的、无标记的对象赋予一个类的标号称为有监督分类。在现实中由于事物的复杂性,聚类对象之问的界限往往不是特别清晰,比如对于脑组织核磁共振图像这样的医学图像来说,由于不同脑组织(如白质、灰质和脑脊液)等混杂在一起会导致图像更加不清晰。因此使用基于多元统计分析的聚类方法分析脑组织核磁共振图像将会受到极大的限制。模糊集合的出现,让传统的聚类分析看到了曙光,从而出现了基于模糊集理论的聚类方法——模糊聚类分析。通过模糊聚类分析能够客观地描述具有不明性的对象,使得实际的聚类结果更加准确合理。
目前,应用最广泛的是模糊C均值聚类算法,简称FCM算法。该方法通过对目标函
数的迭代优化获取对数据集的模糊分类,即将聚类归结为一个带有约束的非线性规划问题,这种方法设计简单,可以转化为优化问题进行求解,在计算机上实现比较容易,另外,模糊C均值聚类在图像分割中是一种无监督模糊聚类的标定过程,因此这种方法从理论上看很适合医学图像的分割。
传统的 FCM 算法,对没有被噪声污染的图像有很好的分割效果,但对于被噪声污
染的图像,如图(3-1)所示,分割效果不太理想。这种对噪声敏感实质上是由于没有利用被分割像素的空间位置信息,忽略了像素之间的邻域信息,因此对于信噪比低的图像,分割效果很不理想。在图像分割过程中,既能减少各种噪声的干扰,又能对原始图像信息进行精确分类是基于标准 FCM 图像分割方法需要改进的一个方向。
2 部分代码
clear all;
clc;
% image = load('im.txt');
image = imread('017.jpg');
[row,col,channels] = size(image);
if (channels > 1)
image = rgb2gray(image);
figure;
subplot(131)
imshow(image);
title('原图像')
else
figure;
subplot(131)
imshow(image);
title('原图像')
end
%对输入图像进行高斯滤波
originimg=image;
originimg=mat2gray(originimg);
[ori_row,ori_col]=size(originimg);
sigma = 1.6; %sigma赋值
N = 7; %大小是(2N+1)×(2N+1)
N_row = 2*N+1;
OriImage_noise = imnoise(originimg,'gaussian'); %加噪
gausFilter = fspecial('gaussian',[N_row N_row],sigma); %matlab 自带高斯模板滤波
img=imfilter(OriImage_noise,gausFilter,'conv');
%figure;
subplot(132)
imshow(img);
title('高斯滤波后')
key_mat = []; % 定义一个空的关键像素矩阵
non_key_mat = []; %非关键像素矩阵
for i = 2:3:row
for j = 2:3:col
if row-i<1|col-j<1
continue;
end
window_image = img(i-1:i+1,j-1:j+1);
[r,c] = size(window_image);
max_value = max(max(window_image)); % 窗口最大值
[x,y] = find(window_image==max_value);
key_mat = [key_mat;[i-2+x(1),j-2+y(1),max_value]];
img(i-2+x(1),j-2+y(1))=-1;
% for m = 1:r
% for n = 1:c
% non_key_mat = [non_key_mat;i-2+m,j-2+n,window_image(m,n)];
% end
% end
end
end
[r,c]=find(img ~=-1);
value = (img(find(img ~=-1)));
non_key_mat = [r c value];
% for m = 1:row
% for n = 1:col
% tmp = [m,n,img(m,n)];
% if ismember(tmp,key_mat,'rows') == 1
% continue;
% end
% non_key_mat = [non_key_mat;tmp];
% end
% end
New_img = key_mat(:,3);
New_coord = key_mat(:,1:2);
cNum = 2;
m = 2;
winSize = 5;
maxIter = 59;
thrE = 0.00001;
% FLICM
[imOut,iter] = FLICM_clustering( New_img, cNum, m, winSize, maxIter, thrE );
imOut = double(imOut);
key_mat = [key_mat imOut];
figure;
gscatter(key_mat(:,1),key_mat(:,2),imOut);
size(non_key_mat);
size(key_mat);
key_mat;
%key_mat = sortrows(key_mat,[1 2])
%img(find(img==-1));
% [xx,yy] = find(img ==-1);
% key = sortrows([yy xx],1)
% img(find(img==-1)) = key_mat(:,4)
for i = 1:size(non_key_mat,1)
z = ones(1,size(key_mat,1))*non_key_mat(i,1);
z=z';
zc = ones(1,size(key_mat,1))*non_key_mat(i,2);
zc=zc';
size(key_mat(:,1));
dis = (z-key_mat(:,1)).* (z-key_mat(:,1))+(zc-key_mat(:,2)).*(zc-key_mat(:,2));
dis = sqrt(dis);
[labelx,labely] = min(dis);
dis = sort(dis);
xx = key_mat(labely,:);
img(non_key_mat(i,1),non_key_mat(i,2)) = xx(4);
end
for j = 1:size(key_mat,1)
img(key_mat(j,1),key_mat(j,2)) = key_mat(j,4);
end
% figure;
% imshow(img,[]);
subplot(133)
imagesc(label2rgb(img,'jet','w','shuffle'))
axis image; axis off;
set(gca,'position',[0 0 1 1]);
axis normal
title('FLFCM分割图')
3 仿真结果
4 参考文献
[1]詹新玲. 基于FLICM模糊聚类和水平集算法的医学图像分割[D]. 河北大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
【图像分割】基于FLICM算法实现图像分割含Matlab源码相关推荐
- 【RF分类】基于matlab随机森林算法数据分类【含Matlab源码 2048期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[RF分类]基于matlab随机森林算法数据分类[含Matlab源码 2048期] 获取代码方式2: 付费专栏Matlab智能算法神经网络 ...
- 【图像去噪】基于matlab全变分算法图像去噪【含Matlab源码 626期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab全变分算法图像去噪[含Matlab源码 626期] 获取代码方式2: 付费专栏Matlab图像处理(初级版) ...
- 【优化算法】基于matlab象鼻虫损害优化算法 (WDOA)【含Matlab源码 2228期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]基于matlab象鼻虫损害优化算法 (WDOA)[含Matlab源码 2228期] 点击上面蓝色字体,直接付费下载,即可. 获 ...
- 【图像去噪】基于最小二乘方滤波实现图像去噪含Matlab源码
1 简介 基于最小二乘方滤波实现图像去噪含Matlab源码 2 部分代码 function varargout = zuixiaoercheng(varargin)% ZUIXIAOERCHENG ...
- 【优化算法】蚁狮优化算法(ALO)【含Matlab源码 1307期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]蚁狮优化算法(ALO)[含Matlab源码 1307期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏M ...
- 【优化调度】基于鸟群算法求解车间调度问题Matlab源码
1 简介 柔性作业车间调度问题是生产调度领域中非常重要的一类带约束优化问题.根据其求解特性,提出一种基于鸟群算法求解以最小化最大完工时间为目标的柔性作业车间调度问题的方法 2 部分代码 clc;cle ...
- 【图像去噪】基于matlab非线性扩散PM算法图像去噪【含Matlab源码 2130期】
⛄一.PM模型图像降噪简介 1 引言 数字图像在获取.存储和传输中总会受到噪声的影响,因此图像去噪一直是备受关注的研究问题.作为图像处理技术的一大分支,基于偏微分方程的方法在图像去噪领域发挥着功不可没 ...
- 【数据聚类】基于改进的粒子群算法优化K-means算法实现数据分类含Matlab源码
1 简介 针对传统的K-means算法对初始聚类中心的选取敏感,容易收敛到局部最优的缺点,提出一种基于改进粒子群优化算法(PSO)的K-means优化聚类算法.该算法利用PSO算法强大的全局搜索能力对 ...
- 【数字信号】基于matlab GUI DTMF双音多频信号仿真演示系统(戈泽尔算法)【含Matlab源码 016期】
⛄一.DTMF简介 1 含义 双音多频 DTMF(Dual Tone Multi Frequency),双音多频,由高频群和低频群组成,高低频群各包含4个频率.一个高频信号和一个低频信号叠加组成一个组 ...
- 【邮政编码识别】基于计算机视觉实现邮政编码识别含Matlab源码
1 简介 邮政包裹的自动分拣可以使邮政部门节省大量的人力物力,有效地提高邮政部门的邮件分拣效率,具有广阔的应用前景.该文对邮政包裹地址标签上的邮政编码识别进行了比较深入的研究,在简化模型的基础之上,详 ...
最新文章
- UICollectionView(一)基本概念
- 关于webStrom-11.1配置less且自动生成.css和自动压缩为.min.css/.min.js
- Oracle 用拼接字符串更新表 测试
- 安装ORACLE 11。2.0.3 配置GRID执行脚本信息记录
- c++ 两个多边形区域重叠_2018 年英国中级数学挑战赛中的多边形问题
- vb脚本从入门到精通_sqlmap从入门到精通第七章720 绕过WAF脚本space2morecommentamp;space2morehash...
- Flink读数据 addSource
- linux下tomcat部署java web项目_在linux下用tomcat部署java web项目的过程与注意事项
- 小程序源码:微信零钱模拟器
- 农历和阳历的之间的转换
- 2016 0CTF rsa
- c语言recy未定义标识符,求解这个C语言子程序什么意思
- 第五章. 可视化数据分析图表—常用图表的绘制2—直方图,饼形图
- mysql修改游戏元宝_页游源码【武斗乾坤】自带安装启动教程+元宝游戏数据修改教程+自由一键游戏启动服务端...
- Android 11 AppOps setOnOpNotedCallback实现分析
- spyder pyecharts不显示_逆袭的IGZOIPS!微星电竞显示器新品评测:色彩好且拖影少...
- STM32实现DAC功能输出音频波形
- 喜马拉雅如何正序播放
- 纯C语言写计算器界面
- Xshell 6、Xftp 6、Xmanager 6 免费版下载
热门文章
- Day01——瑞吉外卖
- 关于团体程序设计天梯赛-练习集 L1-009 N个数求和 (20 分) 以及测试点三过不了的一些想法
- 2022淘宝618喵运会怎么组队升级 拉拉队猫猫玩法实战pk技巧攻略
- T2D_Chapter1_ComputerNetwork and Internet
- tf.transpose用法
- “新冠是骗局!逮捕比尔· 盖茨!”
- 节省微小型云服务器的内存
- 容斥原理应用之:错位排列
- Apollo无人驾驶入门课程笔记之定位 (三)
- 题解-弹飞绵羊 (HNOI2015)