matlab函数

MATLAB数字图像处理(二)图像增强

我与影子孤独终老i 提交于 2019-12-19 04:10:18
1 图像增强 1.1 直方图均衡化 对于灰度图像,可以使用直方图均衡化的方法使得原图像的灰度直方图修正为均匀的直方图。 代码如下: I2=histeq(I1); figure,imshow(I2); figure,imhist(I2); 原图像为lena的图片,经过直方图均衡化后的图片为Figure 1。 Figure 1 原图灰度直方图请参见: MATLAB数字图像处理(一)基础操作和傅立叶变换 ,经过修正后的灰度直方图为Figure 2: Figure 2 可以看出,与原图对比,灰度分布更加均匀。 1.2 灰度变换 在MATLAB中,可以使用imadjust函数对图像进行线性变换。常用的为线性变换。使用的函数为imadjust(I, [low_in, high_in], [low_out high_out],gamma),其中,in为输入的图片变化的灰度范围,out为输出的图片变化的灰度范围,均为[0 1]之间。也就是将low_in和high_in之间的值映射到low_out和high_out之间。gamma为线性值,若为1则为线性变换。 代码和效果如下: I3=imadjust(I1,[0.3 0.7],[0.1 0.9],1); figure,imshow(I3); figure,imhist(I3);    Figure 3 Figure 4 其中,突出了原图0.3-0

PCA原理分析和Matlab实现方法(三)

╄→гoц情女王★ 提交于 2019-12-16 05:05:14
PCA主成分分析原理分析和Matlab实现方法(三) 【 尊重 原创,转载请注明出处 】http://blog.csdn.net/guyuealian/article/details/68487833 网上关于PCA(主成分分析)原理和分析的博客很多,本博客并不打算长篇大论推论PCA理论,而是用最精简的语言说明鄙人对PCA的理解,并在最后给出用Matlab计算PCA过程的三种方法,方便大家对PCA的理解。 PS:本博客所有源代码,都可以在附件中找到 下载 : http://download.csdn.net/detail/guyuealian/9799160 关于PCA原理的文章,可参考: [1]http://blog.csdn.net/guyuealian/article/details/68483384 [2]http://blog.csdn.net/guyuealian/article/details/68483213 [3] 张铮的《精通Matlab数字图像处理与识别 》 一、 PCA原理简要说明 PCA算法主要用于降维,就是将样本数据从高维空间投影到低维空间中,并尽可能的在低维空间中表示原始数据。 PCA的几何意义可简单解释为: 0维-PCA:将所有样本信息都投影到一个点,因此无法反应样本之间的差异;要想用一个点来尽可能的表示所有样本数据,则这个点必定是样本的均值。 1维

【Python学习之路】Numpy 从 Matlab 到 Numpy

老子叫甜甜 提交于 2019-12-15 23:42:21
从 Matlab 到 Numpy ##Numpy 和 Matlab 比较 Numpy 和 Matlab 有很多相似的地方,但 Numpy 并非 Matlab 的克隆,它们之间存在很多差异,例如: MATLAB® Numpy 基本类型为双精度浮点数组,以二维矩阵为主 基本类型为 ndarray ,有特殊的 matrix 类 1-based 索引 0-based 索引 脚本主要用于线性代数计算 可以使用其他的 Python 特性 采用值传递的方式进行计算 切片返回复制 采用引用传递的方式进行计算 切片返回引用 文件名必须和函数名相同 函数可以在任何地方任何文件中定义 收费 免费 2D,3D图像支持 依赖第三方库如 matplotlib 等 完全的编译环境 依赖于 Python 提供的编译环境 array 还是 matrix? Numpy 中不仅提供了 array 这个基本类型,还提供了支持矩阵操作的类 matrix ,但是一般推荐使用 array : 很多 numpy 函数返回的是 array ,不是 matrix 在 array 中,逐元素操作和矩阵操作有着明显的不同 向量可以不被视为矩阵 具体说来: *, dot(), multiply() array : * -逐元素乘法, dot() -矩阵乘法 matrix : * -矩阵乘法, multiply() -逐元素乘法 处理向量

图像的几何运算

混江龙づ霸主 提交于 2019-12-15 17:25:58
目录 1.图像的插值 2.旋转与平移变换 3.缩放与裁剪变换 4.镜像变换 @ 图像的几何运算是指引起图像几何形状发生改变的变换。与点运算不同的是,几何运算可以看成是像素在图像内的移动过程,该移动过程可以改变图像中物体对象之间的空间关系。 1.图像的插值 图像插值是指利用已知邻近像素点的灰度值来产生位置像素点的灰度值,以便由原始图像再生成具有更高分辨率的图像。插值是在不生成新的像素的情况下对原图像的像素重新分布,从而改变像素数量的一种方法。在图像放大过程中,像素也相应的增加,增加的过程就是‘插值’发生作用的过程,‘’插值程序自动选择信息较好的像素作为增加、弥补空白像素的空间,而并非只使用近邻的像素,所以在放大图像时,图像看上去会比较平滑、干净。无论使用何种插值方法,首先都需要找到与输出图像像素相对应的输入图像点,然后再通过计算该点附近某一像素集合的权平均值来指定输出像素的灰度值。像素的权是根据像素到点的距离来而定的,不同插值方法的区别就在于考虑的像素集合不同。最常见的插值方法如下: (1)向前映射法: 通过输入图像像素的位置,计算输出图像对应像素的位置,将该位置像素的灰度值按某种方式分配到输出图像相邻的四个像素。 (2)向后映射法: 通过输出图像像素位置,计算输入图像对应像素的位置,根据输入图像相邻四个像素的灰度值计算该位置像素的灰度值。 (3)最近邻插值:

Matlab的GUI参数传递方式总结

﹥>﹥吖頭↗ 提交于 2019-12-15 00:52:50
Matlab的GUI参数传递方式总结 其实Matlab提供了很多种直接或间接方法实现多fig中的数据共享,只是大家没有注意罢了: 1、全局变量 2、作为函数的参数传递 3、利用控件的userdata数据 4、为handles结构体添加新字段 5、setappdata函数为句柄添加数据 6、跨空间计算evalin和赋值assignin 7、将数据保存到文件,需要时读取 8、带参数调用GUI的M文件 9、嵌套函数(不适用于GUIDE中,只适用纯命令是的GUI) 一、全局变量 运用global定义全局变量传递参数, 适用于 gui 内控件间以及不同 gui 间 。这种方式恐怕是最简单的方式,是很省心!但是,简单的问题就在于有时你会很头疼!因为在每一个要到该全局变量的地方,你都要添一句gloal x,还有就是如果你在一个地方修改了 x的值,那么所有x的值就都变了!有的时候恐怕会出现紊乱。另一个更重要的问题在于,套用C++的一句话,全局变量破坏了程序的封装性!所以,全局变量是能少用尽量少用。 以下创造一个简单的GUI给大家说明一下,建一个GUI, 包含两个按钮,一个坐标系,一个用来画y=sin(x),一个用来画y=cos(x); eg:在GUI的OpeningFcn函数中写: global x y1 y2 x=0:.1:2*pi;y1=sin(x);y2=cos(x);

Matlab如何查看主函数(脚本)中调用的其他函数

瘦欲@ 提交于 2019-12-14 12:08:03
原文链接 转载_原文链接 最近有matlab函数要贴到GitHub上,但是自己代码中加了各种各样的函数和脚本(用来测试LOOCV和五折交叉验证等等),但是又不想一个个看,最后想只调用主函数来看看自己需要哪些函数,找了找博客 解决方法 打开事件探测器 profile on 运行主代码(我的脚本为 demo ) demo 查看并保存结果 profile viewer p = profile('info'); profsave(p,'profile_results') 测试 profile on; demo; profile viewer; p = profile('info'); profsave(p,'profile_results') 来源: CSDN 作者: Manjusaka丶Ether 链接: https://blog.csdn.net/qq_43236341/article/details/103484501

Matlab:strcat函数

心不动则不痛 提交于 2019-12-12 01:32:33
strcat 即 Strings Catenate,横向连接字符串。 作用是将数组 s1,s2,...,sN 水平地连接成单个字符串,并保存于变量combinedStr中。如果任一参数是 元胞数组 ,那么结果 combinedStr 是一个 元胞数组 ,否则,combinedStr是一个字符数组。 举个栗子 for i = 1:100 filename = strcat(‘d:\vedios\’,num2str(i),’.jpg’); end % 作用:从1到50顺序读取d:\vedios目录下所有i.jpg文件 来源: CSDN 作者: MagnumLu 链接: https://blog.csdn.net/qq_28584889/article/details/103487748

贯穿时域与频域的方法——傅立叶分析(直观理解+Matlab实现)

妖精的绣舞 提交于 2019-12-12 01:11:51
Q1:时域与频域是什么? 时域 故名思议就是随着时间的推移,我们所能直观感受的东西或事物,比如说音乐,我们听到动听的音乐,这是在时域上发生的事情。 而对于演奏者来说音乐是一些固定的音符,我们听到的音乐在 频域 内是一个永恒的音符,音符的个数是有限且固定的,但可以组合出无限多的乐曲。 傅立叶也告诉我们,任何周期函数都可以看作不同振幅,不同相位的正弦波的叠加。就像用音符组合出音乐一样。 贯穿时域和频域的方法之一,就是傅立叶分析,傅立叶分析又分为两个部分:傅立叶级数和傅立叶变换。 Q2:傅立叶级数是啥? 傅立叶级数 指出任何 周期函数 都可以看作不同振幅,不同相位的正弦波的叠加。 对比 傅立叶变换 :傅立叶变换指出 非周期的函数 (函数曲线下的面积是有限的)也可以用正弦或余弦乘以加权函数的积分来表示。 说的过程大概是这样子的: 在傅立叶级数中要介绍两个概念:频谱(幅度谱),相位谱。 有了这两个东西之后我们就可以更容易理解把周期函数拆分为各个正弦函数叠加的过程了。 频谱(幅度谱) 之前我们提到了时域和频域,从不同的“域”来看可能会产生很不一样的效果,到底有多不一样呢?先上个图来看一下。 可以看出,从时域来看,我们会看到一个近似为矩形的波,而我们知道这个矩形的波可以被差分为一些正弦波的叠加。 而从频域方向来看,我们就看到了 每一个正弦波的幅值 ,可以发现,在频谱中,偶数项的振幅都是0

matplotlib 入门--12019-12-10

会有一股神秘感。 提交于 2019-12-11 03:39:18
以下是我自己搜集资料学习的matplotlib: ············································1···········pyplot····································· pyplot介绍 matplotlib.pyplot是一个有命令风格的函数集合,它看起来和MATLAB很相似。每一个pyplot函数都使一副图像做出些许改变,例如创建一幅图,在图中创建一个绘图区域,在绘图区域中添加一条线等等。在matplotlib.pyplot中,各种状态通过函数调用保存起来,以便于可以随时跟踪像当前图像和绘图区域这样的东西。绘图函数是直接作用于当前axes(matplotlib中的专有名词,图形中组成部分,不是数学中的坐标系。) 举一个简单的例子: import matplotlib.pyplot as plt plt.plot([1,2,3,4]) plt.ylabel('some numbers') plt.show() 默认情况下,该字符串参数是’b-‘,表示蓝色的实线。 import matplotlib.pyplot as plt plt.plot([1,2,3,4], [1,4,9,16], 'ro') plt.axis([0, 6, 0, 20]) plt.show() 出来的就是红色的了 ------

MATLAB 报错:函数或变量'eml_assert_all-constant'无法识别

回眸只為那壹抹淺笑 提交于 2019-12-10 17:26:20
出现形如’eml_assert_all_constant’的错误一般是由于工具包路径错误导致。 举例说明: 在报错时,在命令行输入 cd (matlabroot) which fir 如果结果输出的路径最后一个文件夹是eml,则本文可以帮助你解决该问题。 解决办法 在命令行输入pathtool 将上述输出的路径(最后结尾为eml的文件夹)移至尾端或删除即可。 来源: CSDN 作者: 海洋菌 链接: https://blog.csdn.net/H_SWhite/article/details/103478030