基于MATLAB的计算机视觉和图像处理代码

用于计算机视觉和图像处理的MATLAB和Octave函数

简单翻译成中文了,原文链接,访问需挂vpn~~~


代码段索引


感知均匀的颜色图

img

许多广泛使用的颜色图具有可感知的平坦点,可以隐藏多达您总数据范围10%的特征。它们还可能具有局部较高的颜色对比点,导致在没有数据时会感知到数据中的错误特征。MATLAB的“热”,“喷射”和“ hsv”颜色图会遇到这些问题。请改用感知均匀的 colorcet贴图!有关这项工作及其背后理论的概述,请访问 此页面

  • colorcet.m一个独立函数,包含我在感知上统一的颜色图的预生成数组。
    如果要从此页面仅下载一项功能,请获取此功能!

    img
    尝试使用colorcet(‘Gouldian’)作为高品质,感官均匀的替代品Parula。您会惊讶于它带来的变化。
    有关地图的设计及其与Parula的比较,请参见此讨论。

色彩图的生成和校正

如果您想尝试自己制作感知一致的颜色表…

  • cmap.m彩色图生成功能。从大型的颜色表库中进行选择。色彩图由CIELAB空间中的B样条路径定义。然后调整沿路径的参数设置,以确保均匀的感知对比度。修改功能以添加所需的任何新颜色图。
  • equalisecolourmap.m 重新映射颜色图中的条目,以使整个颜色图中的感知对比度相等。由cmap.m使用。也可以用于“救援” MATLAB的某些颜色表。
  • linearrgbmap.m生成从[0 0 0]到RGB空间中指定颜色的线性颜色图。
  • ternarymaps.m返回用于生成三元图像的三个基色/基色图。色彩图的亮度紧密匹配(与RGB原色不同)。
  • randmap.m生成随机颜色的颜色图。在感知上不是统一的,并且对于显示连续范围内变化的数据当然毫无用处。但是,对于显示标记的分割图像很有用。
  • makecolorcet.m用于使用cmap.m自动生成colorcet.m函数
  • pseudogrey.m Pseudogrey规模颜色地图2551级水平。如果您希望在8位显示器上获得最佳的高动态范围灰度图像渲染,则此颜色图可能会有所帮助。

用彩色图渲染图像

  • applycolourmap.m将颜色映射应用于单通道图像以获得RGB结果。
  • showdivim.m该功能用于显示带有不同颜色映射的图像。要正确执行此操作,需要将数据中的所需参考值正确地与发散色图的中心条目相关联。
  • showangularim.m此功能显示具有指定颜色图的角度数据图像。为了正确显示角度数据,重要的是要尊重数据值,以便将数据值正确分配给循环颜色图中的特定条目。将值分配给颜色还取决于数据是在pi还是2 * pi上循环的。此功能还允许对角度信息的颜色图编码进行调制,以表示角度数据的幅度/可靠性/相干性。

三元图像

测试影像

  • sineramp.m生成由叠加在斜坡函数上的正弦波组成的测试图像。正弦波的幅度从图像顶部的全值调制为底部的0。用于评估颜色图的有用测试图像。
  • circleineramp.m生成代表sineramp.m循环版本的测试图像,以测试循环颜色图。它由叠加在螺旋斜坡函数上的正弦波组成。

色彩映射路径和色彩空间的可视化

  • colourmappath.m通过CIELAB或RGB颜色空间绘制颜色图的路径。
  • viewlabspace.m CIELAB色彩空间的交互式可视化。对于绘制样条曲线控制点的位置很有用,以便使用cmap.m定义颜色图
  • viewlabspace2.m CIELAB色彩空间的另一种交互式可视化,提供了贯穿色彩空间的垂直切片。
  • generatelabslice.m 以指定的亮度级别在CIELAB空间中生成切片的RGB图像。

读取和写入各种格式的颜色图的功能

色盲模拟和可视化。

色彩空间转换。

所需的其他支持功能。

朱莉娅密码


交互式图像融合

img

这些功能提供了一组用于可视化多个图像的交互式工具。一些使用它们的视频可以在这里看到 。

  • linimix.m 生成交互式图像以在一系列图像之间进行融合。
  • bilinimix.m 生成交互式图像,以在2D图像网格之间进行混合。
  • ternarymix.m用于混合3张图像的交互式三元图像。您还可以在混合和滑动模式之间切换。
    2014年12月更新,在混合功能中加入了滑动功能。也可以在彩色和灰度模式之间切换。
  • binarymix.m 类似于ternarymix,但用于2张图像。
  • cliquemix.m允许在图像集合中的任何一对之间混合或滑动。
    2014年12月更新,在混合功能中加入了滑动功能。
  • cyclemix.m允许以循环方式在图像序列之间进行融合。
  • logisticweighting.m 改编广义物流功能,用作混合图像的加权功能。
  • swipe.m当您可以在2张,3张或4张图像之间进行交互式滑动时,不要只在两个图像之间滑动!
  • collectncheckimages.m 在混合之前收集并检查图像。

以上也是功能要求: normalise.mhisttruncate.mcircle.mcircularstruct.mnamenpath.m

**演示包:**下载 BlendDemo.zip。其中包含以上所有功能和一些示例数据集。在MATLAB的扩展文件夹中,运行blenddemo.m。将打开一系列窗口,每个窗口都显示不同的混合界面。单击任何一个即可玩!

参考:

  • Peter Kovesi,Eun-Jung Holden和Jason Wong,2014年。“用于可视化和解释的交互式多图像融合”,计算机与地球科学72(2014)147-155。 https://doi.org/10.1016/j.cageo.2014.07.010

基于阶段的特征检测和阶段一致性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1wf1AZI4-1610683363781)(https://www.peterkovesi.com/matlabfns/WWWImages/baboon.pc.gif)]

  • 相位一致性是特征重要性的照度和对比度不变度量。与只能检测阶跃特征的基于梯度的特征检测器不同,相位一致性可以正确检测所有相位角的特征,而不仅仅是具有0或180度相位角的阶跃特征。

  • phasecongmono.m此函数通过单基因过滤器计算相位一致性。与下面的其他阶段一致性功能相比,它具有出色的速度并大大减少了内存需求。需要 perfft2.mfiltergrid.mlowpassfilter.m

  • phasecong3.m

    此功能取代了phasecong2.m和phasecong.m,速度更快,所需的内存更少。除边缘外,还计算拐角特征。需要

    filtergrid.m和 lowpassfilter.m

    • 不推荐使用:phasecong.m 用于计算图像中相位一致性的原始代码。此函数还返回要素类型图像。请注意,此功能已由phasecong2.m和phasecong3.m取代,在此仅供参考。
    • 不推荐使用: phasecong2.m相结合代码,结合了边缘和角点检测,并提供了更好的定位。请注意,此功能已由phasecong3.m和phasecongmono.m取代,仅在此处提供参考。
  • dispfeat.m此功能可通过相控对图像中发现的不同特征类型进行可视化和统计。通常,您会在台阶边缘和直线之间找到所有要素类型的广泛分布。此功能需要edgelink.m(请参见下文)。

  • odot.m演示“ Odot”和“ Oslash”运算符对一维信号的作用。这些运算符允许人们以与特征感知的局部能量模型一致的方式分解和组合信号。

  • 将单个定向的Gabor滤镜应用于图像。

    相位对称图像

  • phasesym.m用于计算相位对称性的代码。可以用作行和斑点检测器。相位对称是图像中对称的光照和对比度不变量度。(明亮的圆圈并不像灰色圆圈那样“对称”,就像其他一些措施一样!)。

  • phasesymmono.m该函数通过单基因滤波器计算相位对称性。与phasesym.m相比,具有出色的速度并大大减少了内存需求。但是,您可能更喜欢phasesym面向滤波器的输出。

  • gaborconvolve.m用于用一堆log-Gabor滤波器对图像进行卷积的代码。用于纹理分析,特征检测和分类等的预处理步骤。

  • plotgaborfilters.m用于绘制对数Gabor滤波器的函数。此功能对于查看各种参数设置对上述功能中使用的log-Gabor滤波器组的形成有什么影响非常有用。

  • monofilt.m Felsberg单基因过滤器的实现。此功能将一堆单基因过滤器应用于图像,以在多个尺度上获得2D分析信号。与gaborconvolve一样,它可以用作纹理分析,特征检测和分类等的预处理步骤。

  • highpassmonogenic.m 应用highpass滤波器,并通过单基因滤波器计算相位和幅度。需要perfft2.m

  • filtergrid.m生成用于构建频域滤波器的网格。由以上某些功能使用。

  • 上面函数中使用log-Gabor滤波器进行卷积实现的说明

参考文献:

  • 彼得·科维西(Peter Kovesi), “局部相位的对称性和不对称性”。AI’97,第十届澳大利亚人工智能联合会议。1997年12月2日至4日。会议记录-海报。185-190页。
  • 彼得·科维西(Peter Kovesi), “相位一致性的图像特征”。 Videre:《计算机视觉研究杂志》。麻省理工学院出版社。第1卷第3期,1999年夏季。
    电子出版,即使有信誉良好的出版商,也可能会出现问题。由于某种原因,麻省理工学院出版社选择不再保留Videre的存档。幸运的是,可以在罗彻斯特大学(www.cs.rochester.edu/u/brown/Videre)上找到该期刊的档案 。
  • 彼得·科维西(Peter Kovesi),“边缘不仅仅是步伐”。ACCV2002会议记录,第五届亚洲计算机视觉会议,墨尔本,2002年1月22日至25日。第822-827页。 (预印本)
  • 彼得·科维西(Peter Kovesi),“相一致检测角落和边缘”。 澳大利亚模式识别学会会议:数字图像计算:技术和应用DICTA2003。2003年 12月,悉尼。309-318页。 (预印本)
  • 彼得·科维西(Peter Kovesi), “来自相位信息的图像特征的不变量度”,西澳大利亚大学博士学位论文。1996年。

空间特征检测
  • canny.m Canny边缘检测器。
  • harris.m哈里斯拐角探测器。
  • noble.m来宝的角落探测器。
  • shi_tomasi.m Shi-Tomasi拐角检测器返回结构张量的最小特征值。这代表了Harris和Noble探测器试图逼近的理想状态。
  • hessianfeatures.m粗麻布 特征检测器。
  • fastradial.m Loy和Zelinski的快速径向特征检测器的实现。
  • gaussfilt.m包装函数,用于方便的高斯过滤。
  • 导数 5.m使用Farid和Simoncelli给出的5抽头系数计算图像的一阶和二阶导数。使用此函数代替MATLAB的GRADIENT函数可获得更准确的结果。
  • derivative7.m 使用由法里德和西蒙切利给出的7抽头系数单位计算衍生物。
  • filterregionproperties.m根据 区域的属性值过滤区域。允许您选择指定大小或主轴方向范围内的斑点

参考:

  • 我的哈里斯和斯蒂芬斯(Harris and Stephens)论文“组合的角和边缘检测器”的复印件的扫描图像

分割

整体影像

参考:

  • 快速几乎高斯滤波 澳大利亚模式识别协会会议:DICTA2010。2010年12月。悉尼。
    本文介绍了如何通过积分图像获得高速近似高斯滤波。没有使用像SURF特征检测器那样的粗盒滤波器来近似高斯及其派生的计算依据。

非最大值抑制和迟滞阈值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kpe6IsaF-1610683363784)(https://www.peterkovesi.com/matlabfns/WWWImages/baboon.pc.edge.gif)]

  • nonmaxsup.m用于对边缘图像执行非最大值抑制的代码。
  • nonmaxsuppts.m用于对特征/拐角检测器生成的点执行非最大抑制和阈值处理的代码。它可以选择返回亚像素特征位置。(2016年1月更新)
  • subpix2d.m 2D图像中的子像素位置。
  • subpix3d.m 3D体积或2D +比例空间数据中的子像素位置。
  • hysthresh.m代码,用于执行磁滞阈值处理。
  • featureorient.m 之前非最大抑制计算方位的特征图像上在没有定向信息可从特征检测过程的情况。
  • smoothorient.m 将平滑应用于方向字段,这在应用非最大抑制之前可能会很有用。
  • 自适应 阈值是Wellner自适应阈值方法的实现。

边链接和线段拟合
  • edgelink.m 边缘链接功能,可从二进制边缘图像中形成已连接边缘点的列表。需要下面的findendsjunctions。
  • fillgegaps.m填充二进制边缘图图像中的小间隙。在边缘链接之前应用可能很有用。需要findisolatedpixels.m和findendsjunctions.m
  • drawedgelist.m 绘制出由edgelink或lineeg生成的一组边缘列表。
  • edgelist2image.m 将边列表数据传输回2D图像数组。
  • lineseg.m形成直线段,该直线段对连接的边点列表具有指定的公差。
  • lineseg.m还使用maxlinedev.m来计算边列表与拟合线段的偏差。
  • findendsjunctions.m 查找线/边图像中的线结和结束点。
  • findisolatedpixels.m 查找图像中的孤立像素。
  • cleanedgelist.m清除由edgelink或lineeg生成的一组边缘列表,以便删除短于最小长度的孤立边缘和杂散。此代码存在一些问题,可能会占用大量内存。
  • 上面使用这些功能的示例

测试光栅以进行边缘检测
  • step2line.m 生成测试图像,其中要素类型从阶梯边缘到线要素从上到下变化,同时保持完美的相位一致性。该测试图像表明相位一致的重要性,而与在一个点以及直到一个点出现一致的角度无关,而与振幅谱随频率衰减的速率无关。基于梯度的边缘检测器对所有在零以外的角度(朝向测试图像的底部)具有相位一致的特征产生双重响应。相位一致性检测器以单个响应标记特征。颜色编码的图像是由dispfeat.m生成的
  • circsine.m 生成由圆形正弦波光栅组成的测试图像。也可以用于构造圆相位全等模式。
  • starsine.m 生成一个测试图像,该图像由从中心放射出的正弦波光栅之类的恒星组成。与circsine一样,此功能可用于构造类似恒星的全相位模式。

图像去噪

img img

  • noisecomp.m

    用于对图像进行降噪的代码。该代码与标准小波去噪技术的不同之处在于,它使用非正交小波,并且与现有技术不同,它可以确保将相位信息保留在图像中。相位信息对于人类的视觉感知至关重要。而且,此代码

    确实

    具有自动确定阈值级别的有效方法。

    有关使用此功能的示例,请参见下面的示例,位于灰度转换和增强下。

参考:

对于使用Julia的人员,ImagePhaseCongruency.jl 实现了上面的大多数功能。

曲面的法线
  • shapeletsurf.m

    函数通过将表面法线与一堆Shapelet基函数的表面法线相关联,从其表面法线重建表面估计。对相关结果求和以产生重构。Shapelet基函数的总和会在强制执行曲面连续性的同时导致曲面的隐式积分。

    请注意,重构仅在比例因子(可以对其进行校正)下才有效。但是,重建过程对于噪声和丢失的数据值非常健壮。如果倾斜值存在pi的歧义,则可以进行重构(最大为正/负形状歧义)。仅倾斜数据或仅倾斜数据也可能导致低质量的重建。但是,如果您具有完整的梯度信息,那么使用下面的Frankot Chellappa算法更好。

  • frankotchellappa.m Frankot和Chellappa算法的一种实现,用于根据梯度信息构造可积曲面。如果您在x和y中具有完整的梯度信息,则可能是最好的算法。它非常简单,非常快速并且对噪声具有很高的鲁棒性。如果您具有倾斜和倾斜形式的表面法线信息,并且倾斜数据中的pi不明确,或者只有倾斜,请尝试使用上述shapeltsurf.m。

  • grad2slanttilt.m 将曲面上的渐变值转换为倾斜角和倾斜角。

  • slanttilt2grad.m 将曲面上的倾斜角和倾斜角转换为渐变。

  • needleplotgrad.m 给定表面上的表面梯度,生成针刺图。

  • needleplotst.m根据表面上的倾斜和倾斜值生成针状图。

  • testp.m生成合成测试表面及其表面法线,以测试shapeletsurf。

参考:


标尺计算

img

  • scalogram.m 用于计算一维信号的相位和幅度比例图的函数。使用对数Gabor小波正交对进行分析。

各向异性扩散

img [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QSdIvexQ-1610683363790)(https://www.peterkovesi.com/matlabfns/WWWImages/Mona_diffuses.jpg)]

  • anisodiff.m函数,用于根据Perona和Malik算法对图像进行各向异性扩散。此过程可以平滑区域,同时在尖锐的强度梯度下保留并增强对比度。

灰度转换和增强
  • extractfields.m 从视频帧中分离出场,并可选地插入中间行。

  • interpfields.m 在从视频帧提取的场上插入线。

  • normalise.m将图像值重新缩放为0-1。

  • adjcontrast.m 使用S型函数调整图像对比度。

  • adjgamma.m调整图像伽玛。

  • greytrans.m允许您通过由一系列样条点定义的映射功能以交互方式重新映射彩色或灰度图像中的强度值。试图复制xv的强度贴图工具。它不是那么快,但是可以在浮点图像上运行,从而可以更好地保持图像保真度。(需要remapim.m)。

  • remapim.mgreytrans的非交互式版本,它允许您使用通过greytrans实验确定的映射功能将强度映射应用于彩色或灰度图像。如果要对图像序列应用相同的映射功能,则很有用。

  • histtruncate.m会 截断图像直方图的末端。有助于增强图像的边缘值。

  • histeqfloat.m

    该函数与经典直方图均衡函数的不同之处在于,将累积直方图视为

    函数,

    而不是将输入灰度值映射到其输出值的查找表。在这种方法下,对于包含浮点值的图像,输出图像中不同值的数量将与输入中不同值的数量相同。这可以产生很大的不同。

  • 使用上述某些功能增强视频监控图像的示例。但是,您应该注意,许多监视系统在法律上几乎是盲目的。看到

  • Kovesi,P.视频监视:合法盲点? 《数字图像计算:技术与应用》,2009年。DICTA '09。pp.204-211。
    IEEE出版。doi.org/10.1109/DICTA.2009.41
    (预印本)


频域变换
  • perfft2.m对Moisan的“周期加平滑图像分解”的周期分量进行2D傅立叶变换。我认为这将成为图像的默认fft函数。
  • lowpassfilter.m构造低通巴特沃斯滤波器。
  • highpassfilter.m构造高通巴特沃斯滤波器。
  • highboostfilter.m构造高升压巴特沃斯滤波器。
  • bandpassfilter.m构造带通Butterworth滤波器。
  • homomorphic.m 对图像执行同态过滤。我最喜欢的图像增强技术之一。(需要histtruncate.m和normalise.m)
  • psf.m生成各种点扩展函数。手动指定维纳滤波的点扩展函数或使用解卷积函数(例如Richardson-Lucy算法)时,此函数很有用(请参见MATLAB Image Processing Toolbox函数deconvlucy.m)。
  • psf2.m与psf相同,只是指定功能形状的方式不同,这对于某些应用程序可能更方便。
  • imspect.m绘制在所有方向上平均的图像振幅谱。
  • freqcomp.m 从其傅立叶分量演示了图像重建。
  • filtergrid.m 生成用于构建频域滤波器的网格。由以上某些功能使用。

支持投影几何的功能
  • homography1d.m 计算沿着一条线的3个或更多点的2x2 1D单应性。

  • homography2d.m 计算平面中4个或更多点的3x3 2D单应性。该代码遵循Hartley和Zisserman给出的归一化直接线性变换算法。

  • fundmatrix.m 使用归一化的8点算法从立体图像对中的8个或更多匹配点计算基本矩阵。

  • affinefundmatrix.m从一对立体图像中的4个或更多匹配点计算仿射基本矩阵。

  • fundfromcameras.m在给定两个相机投影矩阵的情况下计算基本矩阵。

  • decomposecamera.m将相机投影矩阵分解为内部参数和外部参数。

  • rq3.m 3 x 3矩阵的RQ分解。

  • skew.m从3向量构造3x3倾斜对称矩阵。

  • normalise2dpts.m转换并规范化一组2D齐次点,以便它们的质心位于原点,并且它们与原点的平均距离为sqrt(2)。这用于改善用于求解单应性,基本矩阵等的任何方程式的条件。

  • hnormalise.m对齐 均坐标数组进行一化,以便其比例参数为1。无穷大的点不变。

  • makehomogeneous.m将N x npts个非均质点数组转换为标度为1的均质点。

  • makeinhomogeneous.m 将N x npts个齐次点数组标准化为1,然后返回不齐次坐标。

  • ray2raydist.m计算两条3D射线之间的最短距离。

  • imTrans.m将均匀变换应用于图像。调整输出图像的原点和大小以包含转换后的图像。(请注意,我在发布带有功能IMTRANSFORM的图像处理工具箱的第3版之前编写了此代码。使用MATLAB的IMTRANSFORM可能会更好。)

  • imTransD.m将均匀变换应用于图像。没有将原点平移应用于转换后的图像。我使用此功能注册图像等。

  • digiplane.m允许您数字化和变换图像中平面区域内的点。

  • equalAngleConstraint.m给定两个相等角度的仿射变换约束。

  • knownAngleConstraint.m给定已知角度的仿射变换约束。

  • lengthRatioConstraint给定长度比的仿射变换约束。

  • circleintersect.m查找两个圆的交点。使用此函数可解决仿射变换约束。

  • hcross.m同质叉积,结果归一化为s = 1。

  • hline.m绘制在齐次坐标中定义的2D线。

  • 点/线的homoTrans 2D均匀变换。

  • plotPoint.m用指定的标记和可选的文本标签绘制点。

  • cameraproject.m将3D世界点投影到摄像机图像中。

  • Idealimagepts.m计算如果相机没有镜头畸变将获得的图像位置。

  • imagept2plane.m将 图像点投影到一个平面并返回其3D位置。

  • resolvestereopt.m在两个或更多图像中,根据给定点的3D坐标来求解该点的3D位置。

  • undistortimage.m给定径向镜头畸变系数,从图像中消除镜头畸变。

  • camstruct.m构造一个包含相机参数的结构。这些参数包括镜头畸变参数和图像尺寸。

  • camstruct2projmatrix.m 将摄影机结构转换为3x4投影矩阵,而忽略了镜头失真参数。

  • plotcamera.m

    给定摄像机结构,在3个空间中绘制摄像机的表示。

  • 如果您在上面使用这些函数,则应查看Andrew Zisserman的 用于多视图几何MATLAB函数。
    此外,您还必须 收听Daniel Wedge撰写的The Fundamental Matrix Song


特征匹配
  • matchbycorrelation.m通过在每个点周围的窗口内寻找彼此最大相关的点,在两个图像中的先前检测到的特征点之间生成推定匹配。仅返回在两个方向上彼此最相关的点。这是一个简单的N 2比较。
  • matchbymonogenicphase.mmatchbycorrelation类似,但是匹配定向的相位值而不是灰度值。相对于归一化的灰度相关,此匹配器的性能相当好。通常,找到的推定匹配项更多,而离群值则更少。在预滤波阶段会有较大的计算成本,但由于每个像素仅用3位有效编码,因此匹配阶段可能会快得多。(尽管在此实现中未实现该潜在速度)。请参阅 下面的testfund以查看使用此功能的示例。

模型拟合和稳健估计

参考文献:

指纹增强

img img

  • ridgesegment.m识别指纹图像的类似山脊的区域。它还可以标准化图像的强度值。
  • ridgeorient.m估计指纹中脊的局部方向。
  • plotridgeorient.m绘制由ridgeorient计算得出的山脊方向。
  • ridgefreq.m估计指纹图像上的局部脊线频率。
  • freqest.m估计图像一小块内的脊线频率。ridgefreq使用它。
  • ridgefilter.m使用定向滤镜增强指纹图像。
  • 上面使用这些功能的示例

地球科学和地球物理功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WCRsnIe8-1610683363792)(https://www.peterkovesi.com/matlabfns/WWWImages/dem_shading.png)] img

  • ppdrc.m相位保持动态范围压缩。基于频率的色调映射算法,适用于科学的非摄影图像。尝试使用此功能代替直方图均衡。在航空资料方面非常好。需要 highpassmonogenic.m
    对于那些在工作朱莉娅ImagePhaseCongruency.jl 提供这一功能的实现。
  • irelief.m用于数据集的交互式浮雕着色的函数。需要 applycolourmap.m
  • relief.m上面的功能的非交互式版本。
  • uppercontinue.m 生成磁场或重力势场数据的向上连续。
  • freqderiv.m 通过频域计算的水平和垂直导数。
  • vertderivativeintegral.m势场数据的垂直导数或积分。
  • 倾斜生成.m生成势场数据的倾斜导数。
  • analyticsignal.m 潜在现场数据的分析信号。
  • agc.m该函数实现Rajagopalan的自动增益控制算法。最初的应用程序是用于显示地球科学的垂直磁梯度数据的,但对于任何种类的高动态范围图像都可以使用。
  • terrace.m该函数为潜在的现场数据实现了Cordell和McCafferty的梯形算法的修改版本。它的关键属性是无论应用多少次迭代,输出都保持稳定。
  • orientationfilter.m 生成图像的方向选择性过滤。用于突出显示数据中具有主导方向的结构。
  • dealias.m 过滤图像,以尝试从任何网格化过程中消除锯齿现象。
  • wavenumbergrid.m 生成用于频域滤波的波数网格。
  • removetrend.m将多项式趋势面拟合到网格并将其删除。

参考:

  • 彼得·科维西(Peter Kovesi),“非摄影高动态范围图像的相位保留色调映射”。会议记录:澳大利亚模式识别学会会议:数字图像计算:技术和应用DICTA2012。 (预印本)

有趣的合成图像和测试图像

img

  • noiseonf.m会生成具有指定幅度谱的噪声图像。可以通过这种方式创建令人愉悦的云模式图像。
  • cloud9.m创建具有指定幅度谱的噪声图像的影片序列。很放松
  • chirpexp.m创建指数线性调频测试图像。线性调频脉冲的幅度从图像顶部的1调制到底部的0。我已使用此测试图像评估了不同颜色图和颜色图各部分在变化的空间频率和对比度下的有效性。
  • chirplin.mchirpexp.m类似,但具有线性线性调频信号。
  • sineramp.m生成由叠加在斜坡函数上的正弦波组成的测试图像。正弦波的幅度从图像顶部的全值调制为底部的0。一个有用的测试图像,用于突出显示颜色图中的问题。
  • circleineramp.m 生成代表sineramp.m循环版本的测试图像,以测试循环颜色图。它由叠加在螺旋斜坡函数上的正弦波组成。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWaj2fyV-1610683363794)(https://www.peterkovesi.com/matlabfns/WWWImages/derespk.gif)]

  • derespolar.m生成极坐标中的分解图像。
  • polartrans.m生成图像的极坐标变换。可以指定线性或对数半径转换。
  • Quantizephase.m 生成图像,在该图像中将相位值量化为所需的级别数。图像中的相位值很重要。然而,尽管如此,它们仍可以在不造成较大视觉损失的情况下进行大量量化。

ASCII图像生成

img

  • matscii.m用于从灰度图像生成ASCII图像的函数。有点复古的乐趣,但是这些天来恒定宽度的字体变得越来越难…

齐次变换
  • plotframe.m绘制由齐次变换指定的坐标系。
  • trans.m均质翻译矩阵。
  • rotx.m均质矩阵,用于绕x轴旋转。
  • roty.m绕y轴旋转的齐次矩阵。
  • rotz.m均质矩阵,用于绕z轴旋转。
  • homotrans.m 的点/线齐次变换
  • invht.m齐次变换矩阵的优化逆
  • 给定齐次变换,inveuler.m求解欧拉角。
  • invrpy.m给出均质变换,解决侧倾角,俯仰角和偏航角。
  • dhtrans.m在给出关节角度,长度,关节偏移和扭曲的链接参数的情况下,计算4x4均匀Denavit Hartenberg矩阵。
四元数
角轴描述符

图像显示,图像书写及其他
  • findimage.m显示一个文件对话框,使您可以交互式地查找和加载图像。当您忘记图像的名称或不必打扰输入时,此功能很有用。
  • findimages.m允许您选择和加载多个图像。这些以单元格数组形式返回。
  • show.m此功能方便地显示具有正确大小,颜色,范围和标题的图像。图形窗口的大小与图像匹配,不留边框,节省了桌面空间。图像尽可能显示为“ TrueSize”,即屏幕上的像素与图像中的像素匹配。
  • showangularim.m此功能显示具有指定颜色图的角度数据图像。为了正确显示角度数据,重要的是要尊重数据值,以便将数据值正确分配给循环颜色图中的特定条目。将值分配给颜色还取决于数据是在pi还是2 * pi上循环的。此功能还允许对角度信息的颜色图编码进行调制,以表示角度数据的幅度/可靠性/相干性。
  • showdivim.m该功能用于显示带有不同颜色映射的图像。要正确执行此操作,需要将数据中的所需参考值正确地与发散色图的中心条目相关联。
  • orientationplot.m使用抖动的定向线可视化定向图像。定向的线段以抖动的网格图案绘制在整个图像上。使用随机抖动的栅格位置而不是规则的栅格可确保栅格图案不会干扰您对方向的感知。这显着改善了定向模式的感知。
  • showfft.m显示fft的幅度谱。
  • showlogfft.m显示fft的对数振幅谱。
  • showsurf.m此函数包装了我通常用于显示表面的命令。使用带有插值底纹的SURFL,“ copper”颜色贴图,启用rotate3d和设置轴vis3d的方式显示表面。
  • togglefigs.m提供了一种方便的方式来切换多个图形的显示。方便比较图像和绘图。图像的轴已链接,因此在所有图像上平移和缩放都同步。
  • syncshow.m使用链接的轴显示多个图像以进行平移和缩放,或链接一组现有图形,以使平移和缩放同步。
  • imwritesc.m此功能将图像缩放和写入功能合并为一个功能。如果图像类型为双倍,则图像值将重新缩放到0-1范围内,以便在写入8位强度值时不会发生溢出。MATLAB会根据文件结尾确定要使用的图像格式。如果图像类型为uint8,则不执行重新缩放。
  • imwritefloattiff.m该函数利用MATLAB的LibTIFF库例程网关Tiff提供基本的浮点图像写入功能。(MATLAB的imwrite()似乎只能写入整数值的tiff图像。)
  • matprint.m此函数使用指定的C样式格式字符串打印出矩阵。通常您会发现MATLAB的默认数字格式不是您想要的…
  • digipts.m用于数字化图像中的点的功能。此功能使用GINPUT提供的十字光标。我发现它比IMPIXEL使用的游标更有用。此外,每个数字化的位置都标有红色的“ +”。
  • impad在过滤之前填充图像的边界。提供各种填充选项。
  • 修剪图像的边界(取消填充)
  • imsetborder将图像的边框像素设置为指定值。
  • removenan用指定的默认值替换矩阵中的NaN值。当您要防止NaN污染和破坏阵列上的某些操作(例如FFT)时,此功能很有用。
  • fillnan用最接近的非Nan像素中的值替换矩阵中的NaN值。
  • implace.m用于将图像放置在较大图像中指定位置的功能。
  • cuberoots.m计算三次方的实根。
  • weightedhistc.m基本等效于MATLAB的加权数据的HISTC函数。
  • geoseries.m用于生成几何序列的便捷函数。
  • circle.m画一个圆。
  • Circularstruct.m生成用于形态学运算的圆形结构元素。您可以改用MATLAB的strel(‘disk’,R,0)。但是,有时候我喜欢能够通过使用半径的浮点值来调整形状。
  • pointinconvexpoly.m确定2D点是否在凸多边形内。
  • rectintersect.m确定两个矩形是否相交。
  • polyfit2d.m使2D多项式曲面适合数据。基本的2D等效于MATLAB的1D polyfit。合并一些归一化以减少数值问题。
  • polyval2d.m评估由polyfit2d.m生成的2D多项式曲面
  • logcolournormalization.m 对彩色图像执行色度,灰色或全面的颜色标准化。
  • svddemo.m演示2x2转换矩阵的SVD和特征值。
几何形状
字符串处理便利功能
  • strstartswith.m测试字符串是否以指定的子字符串开头。
  • strendswith.m测试字符串是否以指定的子字符串结尾。
  • namenpath.m从可能包含目录路径的完整文件名返回文件名及其路径
  • basename.m会删除以文件名结尾的后缀。
  • pathlist.m沿目录路径生成目录的单元格数组

### 回答1: 梯形畸变图片矫正是一种常见的图像处理技术,用于纠正由于使用广角镜头或摄像机放置角度不当等原因造成的图像失真问题。MATLAB是一种强大的科学计算和图像处理软件,可以用来进行梯形畸变图片矫正。 MATLAB提供了一些图像处理工具箱和函数,可以很方便地实现梯形畸变图片矫正。具体的步骤如下: 1. 读取图像:使用imread函数将待矫正的图片读取到MATLAB中。 2. 提取关键点:根据梯形畸变的程度,选取图片中的关键点。一般来说,需要选择图片中的四个角点。 3. 计算矫正矩阵:使用imrect函数选择图片中的四个角点,然后使用fitgeotrans函数计算出矫正矩阵。矫正矩阵可以将原始图像的坐标转化为矫正后图像的坐标。 4. 应用矫正矩阵:使用imwarp函数和所得到的矫正矩阵,对原始图像进行矫正。 5. 显示和保存矫正后的图像:使用imshow函数显示矫正后的图像,并使用imwrite函数将其保存到磁盘上。 通过以上步骤,我们可以使用MATLAB对梯形畸变图片进行矫正。然而,这只是一种简单的方法,对于复杂的畸变问题,可能需要更高级的算法和技术来进行矫正。 ### 回答2: 梯形畸变是指图片中的直线(如建筑物、道路)由于相机拍摄角度的不同而呈现出倾斜、变形的现象。为了纠正这种畸变,可以使用Matlab进行梯形畸变图片矫正。 在Matlab中,首先需要获取图片中的梯形形状。可以使用角点检测算法(如Harris角点检测)来找到图片中的四个角点。角点通常位于梯形的四个边角处。 接下来,使用透视变换(perspective transformation)来矫正图片中的梯形畸变。透视变换是一种将一个平面上的点映射到另一个平面上的点的变换。通过将四个角点映射到一个规则的矩形上,可以实现梯形畸变的矫正。 在Matlab中,可以使用imwarp函数来进行透视变换。该函数需要指定源图像、目标图像以及源图像的四个角点和目标图像的四个对应点。通过将源图像映射到目标图像,就可以实现梯形畸变的矫正。 最后,可以使用imshow函数来显示矫正后的图片,以便进行比较和评估。如果需要保存矫正后的图片,可以使用imwrite函数将其保存为其他格式(如JPEG或PNG)。 综上所述,使用Matlab进行梯形畸变图片矫正的过程包括获取角点、进行透视变换和显示/保存矫正后的图片。通过这些步骤,可以有效地纠正梯形畸变,使直线在图片中呈现出垂直或水平的状态。 ### 回答3: Matlab梯形畸变图片校正是一种图像处理技术,可以用来矫正因相机角度或透视变换引起的图像梯形畸变问题。 首先,我们需要确定输入图像中的四个角点。使用Matlab图像处理工具箱中的函数,例如`corner`或`imfindcircles`,可以检测出这些角点。这些角点可以是物体边界的四个顶点,或者可以预先标记在图像上的人工选择的点。 接下来,我们需要计算原始图像中的四个角点与矩形边界的映射关系。我们可以使用`imcrop`函数来选择原始图像中的感兴趣区域,然后利用`cp2tform`函数来计算矩形边界和原始图像角点之间的关系。 然后,我们可以利用计算得到的映射关系对整个图像进行矫正。使用`imtransform`函数可以对原始图像进行重新映射操作,以消除梯形畸变。这个函数需要使用前面计算得到的映射关系作为输入参数。 最后,我们可以通过将校正后的图像与原始图像进行对比,或者使用`imshow`函数来显示校正后的图像,以确保校正效果达到了预期。 总之,Matlab梯形畸变图片矫正是一种有效的图像处理技术,可以帮助我们消除因相机角度或透视变换引起的图像梯形畸变问题。通过确定角点、计算映射关系和进行图像重映射,我们可以得到校正后的图像,使之更符合我们的期望。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值