【图像分割】基于FLICM算法实现图像分割含Matlab源码

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 【图像分割】基于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    endend[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% endNew_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);endfor 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代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


相关文章
|
13天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
7天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
7天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如&quot;How are you&quot;、&quot;I am fine&quot;、&quot;I love you&quot;等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
15天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
12天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。
|
10天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
14天前
|
算法 决策智能
基于遗传优化算法的TSP问题求解matlab仿真
本项目使用遗传算法解决旅行商问题(TSP),目标是在四个城市间找到最短路径。算法通过编码、选择、交叉、变异等步骤,在MATLAB2022A上实现路径优化,最终输出最优路径及距离。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
216 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
139 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
105 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章