【图像分割】基于matlab超像素SFFCM图像分割【含Matlab源码 1374期】
一、获取代码方式
获取代码方式1:
完整代码已上传我的资源: 【图像分割】基于matlab超像素SFFCM图像分割【含Matlab源码 1374期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
获取代码方式3:
通过紫极神光博客主页开通CSDN年度会员,凭支付凭证,私信博主,可获得此代码。
备注:开通CSDN年度会员,可免费获得1份代码(有效期为开通日起,三天内有效);
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、图像分割简介
理论知识参考:【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】
三、部分源代码
clear all
close all
%%
cluster=2;
f_ori=imread('113044.jpg');
% Note that you can repeat the program for several times to obtain the best
% segmentation result for image '12003.jpg'
%% generate superpixels
%SFFCM only needs a minimal structuring element for MMGR, we usually set SE=2 or SE=3 for
%MMGR.
SE=3;
L1=w_MMGR_WT(f_ori,SE);
L2=imdilate(L1,strel('square',2));
[~,~,Num,centerLab]=Label_image(f_ori,L2);
%% fast FCM
Label=w_super_fcm(L2,centerLab,Num,cluster);
Lseg=Label_image(f_ori,Label);
figure,imshow(Lseg);
function varargout = colorspace(Conversion,varargin)
%Ó¦ÓÃ˵Ã÷£ºf2=colorspace('HSV<-RGB',f);f2ΪÊä³ö£¬fΪÊäÈë,¡®HSV<-RGB¡¯±íʾ´ÓRGB²ÊÉ«¿Õ¼äת»»µ½HSV²ÊÉ«¿Õ¼ä
%COLORSPACE Convert a color image between color representations.
% B = COLORSPACE(S,A) converts the color representation of image A
% where S is a string specifying the conversion. S tells the
% source and destination color spaces, S = 'dest<-src', or
% alternatively, S = 'src->dest'. Supported color spaces are
%
% 'RGB' R'G'B' Red Green Blue (ITU-R BT.709 gamma-corrected)
% 'YPbPr' Luma (ITU-R BT.601) + Chroma
% 'YCbCr'/'YCC' Luma + Chroma ("digitized" version of Y'PbPr)
% 'YUV' NTSC PAL Y'UV Luma + Chroma
% 'YIQ' NTSC Y'IQ Luma + Chroma
% 'YDbDr' SECAM Y'DbDr Luma + Chroma
% 'JPEGYCbCr' JPEG-Y'CbCr Luma + Chroma
% 'HSV'/'HSB' Hue Saturation Value/Brightness
% 'HSL'/'HLS'/'HSI' Hue Saturation Luminance/Intensity
% 'XYZ' CIE XYZ
% 'Lab' CIE L*a*b* (CIELAB)
% 'Luv' CIE L*u*v* (CIELUV)
% 'Lch' CIE L*ch (CIELCH)
%
% All conversions assume 2 degree observer and D65 illuminant. Color
% space names are case insensitive. When R'G'B' is the source or
% destination, it can be omitted. For example 'yuv<-' is short for
% 'yuv<-rgb'.
%
% MATLAB uses two standard data formats for R'G'B': double data with
% intensities in the range 0 to 1, and uint8 data with integer-valued
% intensities from 0 to 255. As MATLAB's native datatype, double data is
% the natural choice, and the R'G'B' format used by colorspace. However,
% for memory and computational performance, some functions also operate
% with uint8 R'G'B'. Given uint8 R'G'B' color data, colorspace will
% first cast it to double R'G'B' before processing.
%
% If A is an Mx3 array, like a colormap, B will also have size Mx3.
%
% [B1,B2,B3] = COLORSPACE(S,A) specifies separate output channels.
% COLORSPACE(S,A1,A2,A3) specifies separate input channels.
% Pascal Getreuer 2005-2006
%%% Input parsing %%%
if nargin < 2, error('Not enough input arguments.'); end
[SrcSpace,DestSpace] = parse(Conversion);
if nargin == 2Image = varargin{1};
elseif nargin >= 3Image = cat(3,varargin{:});
elseerror('Invalid number of input arguments.');
end
FlipDims = (size(Image,3) == 1);
if FlipDims, Image = permute(Image,[1,3,2]); end
if ~isa(Image,'double'), Image = double(Image)/255; end
if size(Image,3) ~= 3, error('Invalid input size.'); end
SrcT = gettransform(SrcSpace);
DestT = gettransform(DestSpace);
if ~ischar(SrcT) & ~ischar(DestT)% Both source and destination transforms are affine, so they% can be composed into one affine operationT = [DestT(:,1:3)*SrcT(:,1:3),DestT(:,1:3)*SrcT(:,4)+DestT(:,4)]; Temp = zeros(size(Image));Temp(:,:,1) = T(1)*Image(:,:,1) + T(4)*Image(:,:,2) + T(7)*Image(:,:,3) + T(10);Temp(:,:,2) = T(2)*Image(:,:,1) + T(5)*Image(:,:,2) + T(8)*Image(:,:,3) + T(11);Temp(:,:,3) = T(3)*Image(:,:,1) + T(6)*Image(:,:,2) + T(9)*Image(:,:,3) + T(12);Image = Temp;
elseif ~ischar(DestT)Image = rgb(Image,SrcSpace);Temp = zeros(size(Image));Temp(:,:,1) = DestT(1)*Image(:,:,1) + DestT(4)*Image(:,:,2) + DestT(7)*Image(:,:,3) + DestT(10);Temp(:,:,2) = DestT(2)*Image(:,:,1) + DestT(5)*Image(:,:,2) + DestT(8)*Image(:,:,3) + DestT(11);Temp(:,:,3) = DestT(3)*Image(:,:,1) + DestT(6)*Image(:,:,2) + DestT(9)*Image(:,:,3) + DestT(12);Image = Temp;
elseImage = feval(DestT,Image,SrcSpace);
end
%%% Output format %%%
if nargout > 1varargout = {Image(:,:,1),Image(:,:,2),Image(:,:,3)};
elseif FlipDims, Image = permute(Image,[1,3,2]); endvarargout = {Image};
end
return;function [SrcSpace,DestSpace] = parse(Str)
% Parse conversion argument
if isstr(Str)Str = lower(strrep(strrep(Str,'-',''),' ',''));k = find(Str == '>');if length(k) == 1 % Interpret the form 'src->dest'SrcSpace = Str(1:k-1);DestSpace = Str(k+1:end);elsek = find(Str == '<');if length(k) == 1 % Interpret the form 'dest<-src'DestSpace = Str(1:k-1);SrcSpace = Str(k+1:end);elseerror(['Invalid conversion, ''',Str,'''.']);end endSrcSpace = alias(SrcSpace);DestSpace = alias(DestSpace);
elseSrcSpace = 1; % No source pre-transformDestSpace = Conversion;if any(size(Conversion) ~= 3), error('Transformation matrix must be 3x3.'); end
end
return;function Space = alias(Space)
Space = strrep(Space,'cie','');
if isempty(Space)Space = 'rgb';
end
switch Space
case {'ycbcr','ycc'}Space = 'ycbcr';
case {'hsv','hsb'}Space = 'hsv';
case {'hsl','hsi','hls'}Space = 'hsl';
case {'rgb','yuv','yiq','ydbdr','ycbcr','jpegycbcr','xyz','lab','luv','lch'}return;
end
return;function T = gettransform(Space)
% Get a colorspace transform: either a matrix describing an affine transform,
% or a string referring to a conversion subroutine
switch Space
case 'ypbpr'T = [0.299,0.587,0.114,0;-0.1687367,-0.331264,0.5,0;0.5,-0.418688,-0.081312,0];
case 'yuv'% R'G'B' to NTSC/PAL YUVT = [0.299,0.587,0.114,0;-0.147,-0.289,0.436,0;0.615,-0.515,-0.100,0];
case 'ydbdr'% R'G'B' to SECAM YDbDrT = [0.299,0.587,0.114,0;-0.450,-0.883,1.333,0;-1.333,1.116,0.217,0];
case 'yiq'% R'G'B' in [0,1] to NTSC YIQ in [0,1];[-0.595716,0.595716];[-0.522591,0.522591];T = [0.299,0.587,0.114,0;0.595716,-0.274453,-0.321263,0;0.211456,-0.522591,0.311135,0];
case 'ycbcr'% R'G'B' (range [0,1]) to ITU-R BRT.601 (CCIR 601) Y'CbCr% Poynton, Equation 3, scaling of R'G'B to Y'PbPr conversionT = [65.481,128.553,24.966,16;-37.797,-74.203,112.0,128;112.0,-93.786,-18.214,128];
case 'jpegycbcr'T = [0.299,0.587,0.114,0;-0.168736,-0.331264,0.5,0.5;0.5,-0.418688,-0.081312,0.5]*255;
case {'rgb','xyz','hsv','hsl','lab','luv','lch'}T = Space;
otherwiseerror(['Unknown color space, ''',Space,'''.']);
end
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]赵勇,方宗德,庞辉,王侃伟.基于量子粒子群优化算法的最小交叉熵多阈值图像分割[J].计算机应用研究. 2008,(04)
【图像分割】基于matlab超像素SFFCM图像分割【含Matlab源码 1374期】相关推荐
- 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】
一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...
- 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】
一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...
- 【Matlab答题卡识别】hough变换答题卡判定与成绩统计【含GUI源码 752期】
一.代码运行视频(哔哩哔哩) [Matlab答题卡识别]hough变换答题卡判定与成绩统计[含GUI源码 752期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [ ...
- 【Matlab答题卡识别】hough变换答题卡判定与成绩统计(带面板)【含GUI源码 1017期】
一.代码运行视频(哔哩哔哩) [Matlab答题卡识别]hough变换答题卡判定与成绩统计(带面板)[含GUI源码 1017期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 ...
- 【Matlab语音分析】语音信号分析【含GUI源码 1718期】
一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...
- 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...
- 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
- 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...
- 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
最新文章
- ML近三年在CVPR比较流行被应用的技术有哪些?
- outdated: 17.2D Texture Font
- token、cookie是什么
- PAT甲级1102 Invert a Binary Tree:[C++题解]反转二叉树、递归
- POJ 2286 The Rotation Game IDA*
- 有限元中单元节点和积分点的区别
- 图像的灰度级数越多越好_数字图像处理:Reducing Gray Levels, Zooming and Shrinking
- [MyBatisPlus]乐观锁和悲观锁
- xp系统的计算机管理中用户在哪里,WINDOWSXP的用户管理和系统安全设置
- LeetCode训练
- [收藏]SQL Server 索引结构及其使用
- 机器学习实战(8):局部加强线性回归LWLR
- c语言fseek128字节,C语言rewind和fseek函数的用法详解(随机读写文件)
- TypeScript 类
- XHTML 教程 续一
- python multiprocessing遇到Can’t pickle instancemethod问题
- 【OpenCV入门指南】第八篇 灰度直方图
- D. Bash and a Tough Math Puzzle
- java地铁最短距离_地铁线路最短路径(项目实现)
- ORACLE US7ASCII编码 读取时乱码问题
热门文章
- vbox NAT 设置端口映射(NAT+8080端口转发)
- MyBatis框架、log4j、数据库的配置文件
- [转]easyui常用控件及样式收藏
- ZOJ Problem Set - 1292 Integer Inquiry
- Tomcat6.0 配置外部数据源(JNDI)
- 七月算法机器学习4 凸优化初步
- AR/MR研究团队和机构
- unity相机的两种不模式的区别
- 目录 1. 管理的门槛	1 1.1. 资历作为一个年龄效应	1 1.2. 高层次知识结构的构建与提升 系统层面及战略层面的问题时	1 2. ,一类是绝对年龄效应,另一类是相对年龄效应。	1 2.1.
- Atitit 职位的规划与来源 1.1. 职位任命多元化	1 1.2. 上级任命	1 1.3. 自我推荐	1 1.4. 他人推荐,	1 1.5. 可以下级选举	1 1.6. 缺席任命	1 1.7.