ncut算法matlab程序,Ncut算法的MATLAB代码下载及实现在MATLAB上正常运行
这里我所使用的平台是:win7(64bit)+MATLAB2014a(64bit)
Ncut算法全称应该是:Multiscale Normalized Cut image segmentation,是图像分割算法。可以说是我目前研究生生涯使用到的分割效果比较理想的一种图像分割算法,
进入下载地址界面后,你会看到如下面截图所示的地方,这里我们下载最新的ncut_multiscale_1_6.zip.
下载完成后,我们将压缩文件进行解压,我们可以看到解压的文件中即有.m文件,也有.cpp文件,如下图所示(部分截图)。
因为.cpp文件需要我们进行编译才能调用,因此,接下来简述下最重要的编译环节,编译我们需要在解压的文件夹中创建complieDir_simple.m文件,代码如下所示:
function compileDir_simple(Cdir);if nargin<1Cdir=pwd;
end
files= dir(fullfile(Cdir,‘*.cpp‘));
oldDir=pwd;
cd(Cdir);for j=1:length(files)try
% cm = sprintf(‘mex %s‘,files(j).name);
cm= sprintf(‘mex -largeArrayDims %s‘,files(j).name);
disp(cm);
eval(cm);catchdisp(lasterr);
disp(‘IGNORE if the file is a C++ file which is not a mex file (ie without a mexFunction inside)‘);
end
end
cd(oldDir);
创建完成后,我们之间点击MATLAB中的运行按钮就可以对cpp文件进行编译了,编译完成后你会发现文件夹中多了后缀为.mexw64的文件,这里w代表的是windows系统,64代表系统为64位的。
接下来我们测试下,是否可以对ncut算法进行调用,ncut算法的调用,我们只需调用ncut_multiscale.m文件就行(如下截图所示)。也就是调用这个[classes,X,lambda,Xr,W,C,timing] = ncut_multiscale(image,nsegs,options);
这里我给一个我使用的测试代码,先在当前存放ncut代码的文件夹里创建一个test.m 的文件,当然文件名你可以随意去了,代码如下所示:
image = imread(‘v48752.jpg‘);
ncut=10;
im=image;
n=ncut;
region= ncut_multiscale(image,10);
[x,y,c]=size(image);
im1=region;for m=1:ncutfor i=1:xfor j=1:yif im1(i,j) ==m
im(i,j,1)=255*abs(sin(255-m*60));
im(i,j,2)=255*abs(cos(m));
im(i,j,3)=255*abs(sin(m*20));
end
end
end
end
figure;
imshow(im)
这里调用的图片为ncut算法解压后文件中自带的图片,你在文件中可以找到。
如果你使用的matlab版本为2013a及以上的版本,则运行后应该会报错说未找到cholinc函数,这是因为cholinc函数在MATLAB2012版本后就被弃用了,2013a以下的版本到这一步应该是可以运行成功了。对于遇到的cholinc函数报错问题可以用ichol函数代替,具体怎么代替,这里举一个代码中需替换的例子:
R = cholinc(C,‘0‘); 替换为 R = ichol(C,struct(‘type‘,‘ict‘,‘droptol‘,0,‘shape‘,‘upper‘));(想了解为何这样替换的可以查看这个链接:http://stackoverflow.com/questions/12895228/ichol-as-cholinc-replacement-nonpositive-pivot)
代码中另外两处的替换如下图所示:
解决了这个问题,我们就可以正常运行下载的ncut算法了。最终运行test.m文件结果如下图所示:
输入:
输出:
到此为止就实现了ncut代码的正常运行了。
这里再补充一下啊,ncut算法还可以用于聚类,具体代码的下载及bug的修复可以看以下链接:
原文:http://www.cnblogs.com/c-happy/p/6422766.html
ncut算法matlab程序,Ncut算法的MATLAB代码下载及实现在MATLAB上正常运行相关推荐
- fdtd算法的matlab程序,FDTD算法的Matlab程序
<FDTD算法的Matlab程序>由会员分享,可在线阅读,更多相关<FDTD算法的Matlab程序(6页珍藏版)>请在人人文库网上搜索. 1.* 5= T$h;O % 3-D ...
- 基2FFT算法matlab程序编写,按时间抽取的基2FFT算法分析及MATLAB实现
按时间抽取的基2FFT 算法分析及MATLAB 实现 1 DIT-FFT 算法的基本原理 有限长序列x (n )的N 点DFT 定义为:∑-==10 )()(N n n k N W n x k X , ...
- bfgs算法matlab程序,bfgs算法matlab代码
(对 Large -scale 问题) 对应文件 \\toolbox\\matlab\\funfun\\fminbnd.m \\toolbox\\optim\\sfminbx.m \\toolbox\ ...
- topsis法matlab程序,TOPSIS算法(示例代码)
title: TOPSIS算法 date: 2020-02-24 11:18:06 categories: 数学建模 tags: [评价模型, MATLAB] mathjax: true 定义 ? C ...
- dijkstra算法matlab程序_Dijkstra算法例子
在Dijkstra算法代码下载本文涉及到的代码. 程序代码 Dijkstra算法的程序如下: function [d, p] = dijkstra(adj, s, t) % 使用dijkstra求最短 ...
- 爬山算法matlab程序,爬山算法和模拟退火算法
爬山算法 大体思路 爬山算法即是模拟爬山的过程,随机选择一个位置爬山,每次朝着更高的方向移动,直到到达山顶 具体操作 把当前的节点和要走的节点的值进行比较. 如果当前节点是最大的,那么不进行操作:反之 ...
- matlab程序4名商人,商人们怎样安全过河附MATLAB程序完整.doc
商人们怎样安全过河附MATLAB程序完整.doc *** 商人们怎样安全过河 随从们密约, 在河的任一岸, 一旦随从的人数比商人多, 就杀人越货. 但是乘船渡河的方案由商人决定. 商人们怎样才能安全过 ...
- fama matlab源码_用matlab程序做Fama-MacBeth回归的代码
求[100,200]之间第二个能被15整除的整数.(用Matlab程序做) x=100:200;>>n=find(rem(x,15)==0);>>X=x(n(2))很简单的两句 ...
- idw matlab 程序_IDW 算法MATLAB 实现 -
中国Unix/Linux软件开发联盟 http://www.lisdn.com IDW 算法MATLAB 实现 linux软件开发 %IDW(反距离加权插值法) %其中x,y,z为已知坐标及其函数值, ...
最新文章
- python中string的操作函数
- 深入理解学习Git常用工作流
- C中out型参数的使用介绍
- C++基础知识点整理
- springboot 整合 kafka demo 顺便看一下源码
- 根据大小分割大文本_基于深度学习的图像分割在高德地图的实践
- 计算机组成原理第二版第4章的答案,计算机组成原理第4章习题参考答案
- 理解 OpenStack Swift (3):监控和一些影响性能的因素 [Monitoring and Performance]
- 企业微信与微信互通能力再升级 全面打通与视频号的连接
- linux ipv4参数查看,Linux内核参数之IPV4变量引用
- 【图像去噪】基于matlab高斯+低通+巴特沃斯滤波虹膜图像滤波【含Matlab源码 501期】
- 2-OAuth2腾讯微博开放平台API小试
- 影像数据库 | ADNI数据下载/分析
- 数据分析03-(数值型描述统计及项目分析)
- DEV的RIchEditControl加载rtf文档时,为mergefield赋值
- 2020大厂面试集合,GitHub,百度,flutter下拉加载
- 人生在世,最大的笑话莫过于自作多情...
- 城市太美、生活步调太悠闲
- arx cloneSameOwnerObjects
- 三款EPUB阅读软件对比