matlab常用的一些程序和功能 您所在的位置:网站首页 matlab五大功能 matlab常用的一些程序和功能

matlab常用的一些程序和功能

2022-06-09 18:57| 来源: 网络整理| 查看: 265

~ 去除误匹配算法(matlab)

1.ransac算法

[tform,matchedPoints1,matchedPoints2] = ...    estimateGeometricTransform(matchedPoints1,matchedPoints2,'similarity','MaxDistance',100);

2.MSAC算法

[tform,matchedPoints1,matchedPoints2] = ...    estimateGeometricTransform(matchedPoints1,matchedPoints2,'similarity','MaxDistance',100);

 

~ matlab打开并行池,以下程序可以当做函数来做以后调用

function [] = startMatlabPool(size)  p = gcp('nocreate');   %获取现在并行池情况if isempty(p)    %如果并行池是空的    poolsize = 0;      else          poolsize = p.NumWorkers    %p.NumWorkers表示的是计算机核数(如果并行池已经完全打开的话)end    if poolsize == 0      if nargin == 0  % nargin 针对当前正在执行的函数,返回函数调用中给定函数输入参数的数目。该语法仅可在函数体内使用。        parpool('local');      else          try              parpool('local',size);  %使用parpool('local',size)来创建        catch ce              parpool;              fail_p = gcp('nocreate');              fail_size = fail_p.NumWorkers;              display(ce.message);              display(strcat('输入的size不正确,采用的默认配置size=',num2str(fail_size)));          end      end  else        display('parpool start');      if poolsize ~= size   % 如果所给核心数与已经运行的核心数不同,则关闭并行池并重新打开并行池         closematlabpool();          startmatlabpool(size);      end  end

 

~ 关闭并行池

function [] = closeMatlabPool     poolobj = gcp('nocreate');     delete(poolobj);  end

~ 更详细的解释可以看以下网页

http://blog.csdn.net/dang_wang/article/details/35553953

 

~ 找二值图像的连通区域

L = bwlabel(BW,n)    返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。

[L,num] = bwlabel(BW,n)这里num返回的就是BW中连通区域的个数。

 举例说明:    BW =    1     1     1     0     0     0     0     0    1     1     1     0     1     1     0     0    1     1     1     0     1     1     0     0    1     1     1     0     0     0     1     0    1     1     1     0     0     0     1     0    1     1     1     0     0     0     1     0    1     1     1     0     0     1     1     0    1     1     1     0     0     0     0     0    按4连通计算,方形的区域,和翻转的L形区域,有用是对角连接,不属于连通,所以分开标记,连通区域个数为3,就是有3个不同的连接区域。    L = bwlabel(BW,4)    结果如下:    L =    1     1     1     0     0     0     0     0    1     1     1     0     2     2     0     0    1     1     1     0     2     2     0     0    1     1     1     0     0     0     3     0    1     1     1     0     0     0     3     0    1     1     1     0     0     0     3     0    1     1     1     0     0     3     3     0    1     1     1     0     0     0     0     0    而8连通标记,它们是连通的:    [L, num] = bwlabel(BW,8)    L =    1     1     1     0     0     0     0     0    1     1     1     0     2     2     0     0    1     1     1     0     2     2     0     0    1     1     1     0     0     0     2     0    1     1     1     0     0     0     2     0    1     1     1     0     0     0     2     0    1     1     1     0     0     2     2     0    1     1     1     0     0     0     0     0

 

~ 返回满足某个条件的元素/像素个数

 

n = numel(A);

 

n= numel(A,条件);

 

返回数组A中元素个数。若是一幅图像,则numel(A)将给出它的像素数。

 

示例:

 

 

 

 

~ 将满足某个条件的区域像素去除(将以上两个进行合并应用)

[L num] = bwlabel(bw);

for i=1:num

  if numel(find(L==i)) < 1200

    bw(L==i) = 0;

  end

end

 

~ 阈值面积消去

imageThresholdMorphology = bwareaopen(imageThreshold,15,4);%把白像素小于某个值的像素数去掉,其中15代表连通的像素个数,4代表联通度

 

~ 常用的一些对区域的处理算法

1、 matlab函数bwareaopen──删除小面积对象格式:BW2 = bwareaopen(BW,P,conn)作用:删除二值图像BW中面积小于P的对象,默认情况下使用8邻域。算法:(1)Determine the connected components.  L = bwlabeln(BW, conn);(2)Compute the area of each component.  S = regionprops(L, 'Area');(3)Remove small objects.  bw2 = ismember(L, find([S.Area] >= P));

2、matlab函数bwarea──计算对象面积格式:total = bwarea(BW)作用:估计二值图像中对象的面积。注:该面积和二值图像中对象的像素数目不一定相等。

3、matlab函数imclearborder──边界对象抑制格式:IM2 = imclearborder(IM,conn)作用:抑制和图像边界相连的亮对象。若IM是二值图,imclearborder将删除和图像边界相连的对象。默认情况conn=8。注:For grayscale images, imclearborder tends to reduce the overall intensity level in addition to suppressing border structures.算法:(1)Mask image is the input image.(2)Marker image is zero everywhere except along the border, where it equals the mask image.

4、matlab函数bwboundaries──获取对象轮廓格式:B = bwboundaries(BW,conn)(基本格式)作用:获取二值图中对象的轮廓,和OpenCV中cvFindContours函数功能类似。B是一个P×1的cell数组,P为对象个数,每个cell 是Q×2的矩阵,对应于对象轮廓像素的坐标。

5、matlab函数imregionalmin──获取极小值区域格式:BW = imregionalmin(I,conn)作用:寻找图像I的极小值区域(regional maxima),默认情况conn=8。Regional minima are connected components of pixels with a constant intensity value, and whose external boundary pixels all have a higher value.

6、matlab函数bwulterode──距离变换的极大值格式:BW2 = bwulterode(BW,method,conn)作用:终极腐蚀。寻找二值图像BW的距离变换图的区域极大值(regional maxima)。用于距离变换的距离默认为euclidean,连通性为8邻域。

7、regionprops统计被标记的区域的面积分布,显示区域总数。函数regionprops语法规则为:STATS = regionprops(L,properties)该函数用来测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。

返回值STATS是一个 长度为max(L(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。

Properties可以是由逗号分割的字符串列表、包含字符 串的单元数组、单个字符串'all'或者'basic'。如果properties等于字符串'all',则表4.1中的度量数据都将被计算;如果properties等于字符串'basic',则属性:'Area','Centroid'和'BoundingBox'将被计算。表1就是所有有效的属性字符串。

表1 属性字符串列表----度量图像区域的属性或功能'Area' 图像各个区域中像素总个数'BoundingBox'  包含相应区域的最小矩形'Centroid' 每个区域的质心(重心)'MajorAxisLength' 与区域具有相同标准二阶中心矩的椭圆的长轴长度(像素意义下)'MinorAxisLength' 与区域具有相同标准二阶中心矩的椭圆的短轴长度(像素意义下)'Eccentricity' 与区域具有相同标准二阶中心矩的椭圆的离心率(可作为特征)'Orientation' 与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角(度)'Image' 与某区域具有相同大小的逻辑矩阵'FilledImage' 与某区域具有相同大小的填充逻辑矩阵'FilledArea' 填充区域图像中的on像素个数'ConvexHull' 包含某区域的最小凸多边形'ConvexImage' 画出上述区域最小凸多边形'ConvexArea'   填充区域凸多边形图像中的on像素个数'EulerNumber' 几何拓扑中的一个拓扑不变量——欧拉数'Extrema' 八方向区域极值点'EquivDiameter' 与区域具有相同面积的圆的直径'Solidity' 同时在区域和其最小凸多边形中的像素比例'Extent' 同时在区域和其最小边界矩形中的像素比例'PixelIdxList' 存储区域像素的索引下标'PixelList' 存储上述索引对应的像素坐标

 

~ 填充空洞

填充图像区域和“空洞”。语法格式:BW2 = imfill(BW)这种格式将一张二值图像显示在屏幕上, 允许用户使用鼠标在图像上点几个点, 这几个点围成的区域即要填充的区域。要以这种交互方式操作, BW必须是一个二维的图像。用户可以通过按Backspace键或者Delete键来取消之前选择的区域;通过shift+鼠标左键单击或者鼠标右键单击或双击可以确定选择区域。[BW2,locations] = imfill(BW)这种方式, 将返回用户的取样点索引值。注意这里索引值不是选取样点的坐标。BW2 = imfill(BW,locations)这种格式允许用户编程时指定选取样点的索引。locations是个多维数组时, 数组每一行指定一个区域。BW2 = imfill(BW,'holes')填充二值图像中的空洞区域。 如, 黑色的背景上有个白色的圆圈。 则这个圆圈内区域将被填充。I2 = imfill(I)这种调用格式将填充灰度图像中所有的空洞区域。

~ 常用的模板匹配算法(MAD,SAD,SSD,MSD,NCC,SSDA)

http://www.bubuko.com/infodetail-1049139.html

 

~ 卷积操作 conv2,具体解释见如下网页

http://blog.csdn.net/tina_ttl/article/details/51034809

 

~ matlab EMD工具箱的安装

https://blog.csdn.net/qrlhl/article/details/52213135

 

~ matlab常用工具箱汇总见

https://www.cnblogs.com/Hand-Head/articles/5168534.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有