MATLAB
开飞机的小毛驴儿
自律者自由
展开
-
matlab排除结构体中无意义的字符
在使用dir函数时,默认会列出指定路径下的所有文件和文件夹并保存在结构体中,这时候会发现,结构体中的name会自动保存'.'和‘..’这两个无意义的东西。一种方法是遍历的时候直接跳过,代码如下:for i=1:length(textureTypes) if (isequal(textureTypes(i).name,'.')||... isequal(textureTypes(i).name,'..')||... ~textureTypes(i).isdir)原创 2020-12-22 10:08:56 · 389 阅读 · 0 评论 -
Matlab归一化实现
好久都没有用过matlab了,很多函数都不在熟悉。如何实现图像0-255归一化?自己写一个函数:function normalizedImg=Normalize(inputImg)ymax=255;ymin=0;xmax=max(max(inputImg));xmin=min(min(inputImg));normalizedImg=round((ymax-ymin)*(inputImg-xmin)/(xmax-xmin)+ymin);end但其实matlab自身就有类似功能的函数原创 2020-12-21 17:22:46 · 1516 阅读 · 0 评论 -
Windows 64 + Matlab 64 MEX混合编程初步
说明Matlab混合编程下载与安装编译器Microsoft Windows SDK 71CCTDM-GCCgccgFor Matlab 2015For Matlab 2014选择编译器编写ccpp文件mexFunction函数介绍编译多个ccpp文件一些实例MATLAB2015编译MeanShiftProblemSolution找不到编译器或SDKProblemSolution注意error C2...转载 2018-03-20 19:45:26 · 1331 阅读 · 1 评论 -
PCA人脸识别,附matlab代码和详细注释
选用ORL_92x112人脸数据集,共包含了40张人脸,每张人脸有10张不同姿态图像。代码中人脸矩阵中每一行对应一个人脸,每一列对应一个属性。完整的数据集和代码可以在这里下载:http://download.csdn.net/download/jzwong/10106036代码读入原始人脸数据集,默认选择每个类中的前5张图像做训练% Revised by Jianzhu Wang ...原创 2017-11-04 21:24:18 · 26602 阅读 · 74 评论 -
Matlab实现HOG+SVM图像分类
转载自:http://blog.csdn.net/cuixing001/article/details/70908064,版权归原作者所有。我训练的图像在磁盘上位置如下,包含5个类别,省去了前人制作txt存储图像路径的过程:测试图像分布为:作者的代码写的非常工整,值得学习,尤其是利用了imageDatastore这种存储格式,使用起来转载 2017-10-16 15:47:23 · 12063 阅读 · 4 评论 -
matlab添加当前文件夹及子文件夹到路径
就一条命令:addpath(genpath(currentFolder));原创 2017-10-28 10:39:31 · 10700 阅读 · 0 评论 -
Matlab调用Opencv
本文主要介绍Matlab与C/C++混合编程,并给出Matlab调用Opencv的具体实例。参考资料在文末给出。 1. mexFunction 在Matlab与C/C++混合编程中,mexFunction必不可少。其基本形式为:void mexFunction(int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs)其中nlhs表示输出参数原创 2017-09-21 20:20:36 · 16655 阅读 · 5 评论 -
C/C++与Matlab混合编程初探
转载自:http://blog.csdn.net/bendanban/article/details/37830495Matlab 拥有丰富的功能,编程简单。不过,有些情况下,Matlab程序的执行速度比较慢。C/C++编译执行的程序速度比较快,编程难度上比Matlab要高一些。因此存在一种方案,就是使用Matlab实现我们的实验程序,用C/C++来实现Matlab程序中比较耗时的部分,从转载 2017-09-15 22:42:03 · 461 阅读 · 0 评论 -
Traditional Saliency Reloaded: A Good Old Model in New Shape
发在CVPR2015上的一篇文章,读起来并不是很困难,思路也比较纯粹。作者也开源了代码,在这里下载:http://pages.iai.uni-bonn.de/frintrop_simone/vocus2.html问题是,作者的代码依赖于Boost C++ Library,但是我对这个库并不是很熟悉,配置起来可能不是那么方便。所以我根据自己的理解,用Matlab重写了一下,看起来效果还可以,希望能对原创 2017-11-10 22:06:05 · 631 阅读 · 0 评论 -
Matlab出现NaN错误
可以借助matlab自带的一个函数isnan来检查。如果涉及到计算机视觉图像矩阵处理方面,很可能是归一化的时候出现分母为0的情况。在分步调试的时候,最好在每一个可能出现NaN的地方使用isnan来做测试,例如 if isnan(FeatureMap) disp('BYFeature is a NaN!') break; end这是我的教训!原创 2017-12-31 22:20:50 · 14301 阅读 · 3 评论 -
Matlab手工拖动鼠标绘制矩形和圆形并产生GroundTruth
需要人工合成一个数据集,在指定的图像上绘制圆形和矩形的“缺陷”,并根据绘制的缺陷产生相应的ground truth.为了一定程度上模拟真实的缺陷图像数据,我们在合成的缺陷图像上添加了椒盐噪声和高斯噪声。程序可以指定需要绘制的矩形和圆形的个数,Matlab代码如下:%用来产生合成缺陷数据集clc;clear;imgDir='./Reference/';resDir1='./Synthe...原创 2018-12-17 21:31:11 · 2201 阅读 · 0 评论 -
如何在给定的图形上绘制圆形
希望生成一些人工的测试图像数据,在造groundtruth的时候需要在根据在图像上绘制的圆形生成二值的groundtruth.这时候该怎么做呢?一种最简单的方法是利用meshgrid函数,利用圆心和半径之间的关系生成二值图。关键代码如下:img=double(rgb2gray(imread(imgFile)));[m,n]=size(img); figure,imshow(img,[...原创 2018-12-17 16:59:01 · 380 阅读 · 0 评论 -
Matlab中regionprops的使用示例
转载自:https://blog.csdn.net/shaoxiaohu1/article/details/40272531有这样一幅图,我们想获取其中的连通区域,可以使用以下代码:src_img_name = 'blue_sky_white_clound_002594.jpg';img = imread(src_img_name); % get binary image...转载 2018-10-24 22:51:09 · 1315 阅读 · 0 评论 -
Matlab将结构体struct字段内的数据转化到矩阵中
假设structure1,为一结构体,structure1.name为100个字符串 怎么将这些字符串不用循环一次性赋值到矩阵A?? A=structure1.name 为什么只是将第一个赋值过去? 答案是可以使用cat函数: 可以用cat函数, A = cat(1,structur1.name)是按列读取 A = cat(2,structur1.n...原创 2018-10-24 17:57:40 · 30477 阅读 · 4 评论 -
说说im2bw这个函数对uint8和double的反应
im2bw是matlab中经常用到的一个函数,其作用就是将输入图像转化为二值图像,但是其中也有一些坑啊!在检测应用中,一种比较好的选择是将输入图像转化为uint8后再使用im2bw函数,为什么呢?下面给出一个例子。假如原图为double类型,tt1=im2bw(img,thr)后tt1中的结果元素大部分可能都为1,原因是im2bw的作用是将img/255大于thr的元素置为1,反之则置为0,此...原创 2018-10-23 21:50:52 · 925 阅读 · 0 评论 -
Matlab中cellfun的速度优化
在做实验中需要用到matlab的cellfun,但是使用后速度巨慢无比,原因就在于cellfun中的函数上。注意,matlab最擅长的是矩阵运算,是矩阵运算,是矩阵运算!重要的事情说三遍!尽量把嵌套在cellfun中的函数表达能矩阵运算的形式,速度上会有显著提升!例如,我需要对每个cell表格中的8个二值向量转化为十进制的数,原始的代码为:vertical_diff_feature=cellf...原创 2018-07-24 19:47:05 · 2696 阅读 · 0 评论 -
关于matlab中find函数失效的问题
matlab中的find函数可以返回指定元素的位置,但是有时候会发现矩阵中明明存在一个数,但是返回位置却是空的,即找不到指定元素的位置。这时候需要考虑的是matlab的精度问题。如下图中,表面上第一个元素是0.6678,但是[i j]=find(a==0.6678)返回的却是空值,原因很可能是matlab的精度问题。具体地,点击0.6678这个数可能并不是0.6678,小数点后面可能还存在多个小数...原创 2018-04-14 16:22:36 · 7647 阅读 · 3 评论 -
matlab中的imshow函数的问题
matlab中的imshow函数,是一个经常使用又容易“犯错”的函数,尤其是其参数中的[]让人无语,找了一个不错的答案记录下来,摘抄自:http://www.360doc.com/content/13/1105/10/12085465_326756155.shtml 并作部分修改 在matlab中经常使用imshow函数来显示图像,而此时的图像矩阵可能经过了某种运算。在matla转载 2016-05-09 15:22:58 · 4907 阅读 · 4 评论 -
matlab求矩阵中满足某条件的元素个数
经常遇到比如求矩阵中大于0的元素个数这样的问题,这样简单的问题每次都出错,都是现查现用,今天就做一个汇总,记录一下。比如说求矩阵A中大于0的元素个数,在matlab里可以这样写:sum(A(:)>0),这也是最简单的一种写法。还有一种是利用find函数,先返回满足条件的元素的索引组成的向量,然后输出索引的长度即可,length(find(tm>0)) 记住!原创 2016-08-25 20:48:05 · 28386 阅读 · 1 评论 -
matlab的regionprops详解
matlab函数_连通区域1、 matlab函数bwareaopen──删除小面积对象格式:BW2 = bwareaopen(BW,P,conn)作用:删除二值图像BW中面积小于P的对象,默认情况下使用8邻域。算法:(1)Determine the connected components. L = bwlabeln(BW, conn);(2)Compute th转载 2016-06-23 15:01:43 · 1322 阅读 · 0 评论 -
关于matlab中的kmeans和reshape函数
matlab中自带k均值聚类函数kmeans,但使用不当可能导致一些问题,下面总结一下使用这两个函数的时候需要注意的事情。比如说先随便造一个矩阵sample如下图:然后对其施行kmeans聚类算法,Idx=kmeans(sample,2)该命令将聚类标号存储在Idx中,当然有时候这句话会报错如下图:这并没有关系,看提示就知道是在迭代中没能形成簇,这时候重新多运行几次应该原创 2016-06-22 14:15:25 · 1278 阅读 · 0 评论 -
matlab连续读取多幅图像
其实之前用过,但是一直记不住,每次都是现查现用,今天又用到了所以直接把原文拷贝过来吧,以后直接翻自己的博客就能找到,方便自己。转载自:http://www.ilovematlab.cn/thread-116802-1-1.html基本上有两个方法:一个是将你的图像统一进行一次重命名如:1.jpg,2.jpg等,然后利用for循环依次进行处理即可,如下面的语句:假设你的图像共有20副:转载 2016-06-22 10:58:06 · 8796 阅读 · 0 评论 -
matlab保存图片不带白边的方法
imshow(strain_image,'border','tight','initialmagnification','fit'); set (gcf,'Position',[0,0,500,500]); 就是上面这两行代码,再点击保存为就可以去掉白边显示了。set中的前两个参数表示显示框出现的位置,后面的两个参数表示图片的长与宽。原创 2016-11-26 11:21:45 · 10296 阅读 · 1 评论 -
matlab中的mat2cell及cellfun使用
遇到了将一个矩阵分为几个子矩阵并分别对子矩阵进行操作的问题,经网上搜索测试,学习使用mat2cell及相应的cellfun,下面是一些个人的理解。先说mat2cell函数,从函数名可以看出,这个函数的作用就是将矩阵分为几个子矩阵,也就是所谓的胞元(cell)。为了说清楚这个函数的作用,先引入数学中的一个概念叫做笛卡儿积,具体概念示例如下图:在mat2cell函数中,有三个参数,第一原创 2016-12-07 18:37:05 · 39907 阅读 · 3 评论 -
matlab二值图保留最大的几个连通域
经常看到的问题是保留二值图中最大的连通域,如果保留前几大的连通域该怎么办呢?只需要借助排序操作就可以了。下面给出简单的代码示例,保留前15大面积的连通域 imLabel = bwlabel(tmp);% 对连通区域进行标记stats = regionprops(imLabel,'Area');[b,index]=sort([stats.Area],'descend');if length原创 2016-12-12 17:03:11 · 8451 阅读 · 0 评论 -
matlab加载当前文件夹及所有子文件夹
addpath只能加载当前文件夹,如果想顺带加载当前文件夹下所有的子文件夹,需要借助genpath命令,下面是一个代码例子:addpath(genpath('..\wnn\wavelet'));就是这样咯!原创 2016-12-14 20:04:13 · 2938 阅读 · 0 评论 -
matlab求二值图像最小外接矩形
原文参照:http://www.ilovematlab.cn/thread-71681-1-1.html下载这个函数,用法如下http://www.mathworks.com/matlabcentral/fileexchange/13624-minimal-bounding-rectangleurl='http://www.ilovematlab.cn/atta转载 2016-07-18 16:44:45 · 17097 阅读 · 2 评论 -
matlab绘制图像的灰度直方图
灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度级内容 。Matlab标准函数 imhist()为显示灰度直方图的函数,其横坐标表示像素的灰度级别,纵坐标为像素点的个数。需要注意的是,在图像处理中我们经常习惯将图像对应的矩阵元素转化为double的,这时候绘制灰度直方图显示就不正确,也不能说不正确,怎么说呢?唉,反正就应该是如下例子一样,或者说可以在转为uint8格式的。原创 2016-07-18 15:01:39 · 17007 阅读 · 0 评论 -
matlab求凸包
实验结果需要一定的后处理,求凸包。matlab以专门的函数,查了半天也只能做到先用了,各个参数还不是很明白,先做记录。我是对一幅二值图像做凸包的,二值图如下:然后用代码求出其凸包及最小外接矩形,代码如下(注意:代码可直接使用,但具体怎么调用的我还不太明白,纯当记录使用,参考了csdn一位博主的代码,他的代码里I和bw用混了)。figure;imshow(pure);stats原创 2016-05-24 15:05:25 · 7288 阅读 · 1 评论 -
matlab寻找最大连通域
不确定之前有没有记录过求连通域的算法,今天再写一次吧,可能以后还会用到。L = bwlabel(image);% 对连通区域进行标记stats = regionprops(L);Ar = cat(1, stats.Area);ind = find(Ar ==max(Ar));%找到最大连通区域的标号image(find(L~=ind))=0;%将其他区域置为0figure,imsho原创 2016-06-20 15:04:29 · 7748 阅读 · 3 评论 -
matlab在循环中保存图片命名不重复
for i = 1:n tmp=img_1{1,i}; filename=['D:\fire_',num2str(i),'.bmp']; imwrite(tmp,filename,'bmp');end原创 2016-06-20 15:09:14 · 14264 阅读 · 5 评论