用Excel 。打开之前需要安装一个插件,安装好了后,无论用金山还是微软的,他都可以打开,打开的时候,tdms文件右键打开方式里面,就有你安装插件,选择你安装的插件打开该文件。如果不安装插件,用excel打开,就会出现乱码(该插件见我上传的资源,资源名称为:nitdmexcel_18-0-1l”)
用MATLAB TDMS 函数。这里需要下载一个NI官网的程序“MATLAB TDM Example”,下载该程序后就可以进行读取TDMS文件。这个文件见我上传的资源,MATLAB TDM Example,或者从NI官网地址下载NI官网的读取TDMS函数
使用ConventTDMS函数,这个文件则需要在MATLAB的math官网下载,这个程序也可以打开。官网链接为ConvertTDMS (v10),这个函数直接把TDNS文件的数据直接储存为MAT文件,不会像第二种方法一样,直接显示波形。
使用LabView打开,利用其的csv文件,熟悉LabView的,可以试着打开,打开后,里面再调用matlab程序,也可以处理tdms文件。
用维纳滤波试试,或者尝试对图像进行一定程度的锐化(比较简单的就是用拉普拉斯算子过滤出的边缘和源图像相加就行了,记得之前有看到曲波(curvelet)增强的英文文献,效果貌似很赞)。
不过主要原因还是你去噪算法的的问题,一般去噪都会以损失一定图像质量为代价的,不过好的去噪算法和差的算法还是差蛮多。
我做的是医学CT图像,图像里高斯噪声很重,基本大家都是不会去噪的,而是选择对噪声不敏感的算法去做处理,因为去噪图像基本就是一团模糊,完全没法使用了。
BM3D 是一种降噪方法提高了图像在变换域的稀疏表示。BM3D 降噪方法的优点是更好的保留图像中的一些细节,BM3D采用了不同的去噪策略。通过搜索相似块并在变换域进行滤波,得到块评估值,最后对图像中每个点进行加权得到最终去噪效果。
原理:首先将一幅图像分割成尺寸较小的小像素片,选定参考片后,寻找与参考片相似的小片组成 3D 块。此过程过后将得到 3D 块。然后将所有相似块进行 3D 变换。将变换后的 3D 块进行阈值收缩,这也是除去噪声的过程。然后进行 3D 逆变换。最后将所有的 3D 块通过加权平均后还原到图像中。
BM3D算法的大致流程:
第1步 初始估计
(1)逐块估计。对含噪图像中的每一块
(i)分组。找到它的相似块然后把它们聚集到一个三维数组。
(ii)联合硬阈值。对形成的三维数组进行三维变换,通过对变换域的系数进行硬阈值处理减弱噪声,然后逆变换得到组中所有图像块的估计值,然后把这些估计值返回到他们的原始位置。
(2)聚集。对得到的有重叠的块估计,通过对他们进行加权平均得到真实图像的基础估计。
第2步 最终估计
(1)逐块估计。对基础估计图像中的每一块
(i) 分组。通过块匹配找到与它相似的相似块在基础估计图像中的位置,通过这些位置得到两个三维数组,一个是从含噪图像中得到的,一个是从基础估计图像中得到的。
(ii)联合维纳滤波。对形成的两个三维数组均进行三维变换,以基础估计图像中的能量谱作为能量谱对含噪三维数组进行维纳滤波,然后逆变换得到组中所有图像块的估计,然后把这些估计值返回到他们的原始位置。
(2)聚集。对得到的有重叠的局部块估计,通过对他们进行加权平均得到真实图像的最终估计。
这一篇文章中说明了用"二维卷积"的方法进行滤波/降噪( 二维卷积滤波 )。本文主要介绍另一种滤波的方法:在二维傅里叶变换后的" 频振谱 "中,用" 滤波器 "进行滤波,并对比这两种滤波方法的优劣。
滤波器没那么复杂,就是一个函数式而已,只不过这个函数式有一些特别的功能。本文选用的是" 巴特沃斯滤波器 ";图像的噪声还是" 高斯噪声 "和" 椒盐噪声 "。巴特沃斯滤波器的函数式为:
其中 是截止频率(高于这个频率值,就被滤掉了), 是阶次, 是" 中心化频振图( 中心化参考这里 ) "中各点" 距中心点的距离 "。非常简单的一个函数。而且注意到: 说明这就是在频域内的一个函数,所以它的用法就是直接和" F(u,v) F频域参看这里 "做" 矩阵点乘 "即可达到滤波~
下面我们就实 *** 一下,对一个原始图像做一下低通滤波看看(把图像" 变模糊 ",因为一些信号被滤掉了),对应的Matlab程序如下:
效果如下,图1是原始图像,图2是低通滤波后图像(记得ifft2回到原始xy空间):
利用这篇文章中 同样的噪声 (高斯随机噪声、椒盐噪声),看看用频域滤波效果如何。这里我就设定截止频率 ,阶次 进行" 巴特沃斯低通滤波 ",加噪声后图像如下:
二维傅里叶变换后频域做低通滤波,效果说明:
最后,再补充一个" 加噪声-fft2-滤波-ifft2 "的完整流程的Matlab程序:
本文用到的" zxcjpg "原图像, 在这里 。
一般情况下,如果想要写到txt文本的话,你使用fprint就行;如果写到二进制文件的话,使用fwrite。当然还有个最简单的办法就是在matlab运行后,在workspace中会有相应的矩阵,你双击,之间将要的数据另存为或者是复制就行。
望采纳
按照你上面的代码,a3 dd3 dd2 dd1是应该都为行向量,它们的长度a3和dd3长度相等,dd2约等于其一倍,dd1又是dd2的约一倍左右,c1=[a3 dd3 dd2 dd1]是4个行向量按顺序依次组成总小波系数数组,这代码没啥问题,waverec和wavedec函数都是依靠CL组构的,它对C处理没啥难以理解的,L数组存放的就是a3 dd3 dd2 dd1长度值,靠他在C中取出最高阶的a和其他各阶的d,a和d的小波系数本来就不等长,这样才能实现DWT理论中各层分解中小波函数伸长的效果。就是因为它们不等长,用元胞数组 *** 作太麻烦,所以才把系数混排成一行,再加一个长度数组L共同 *** 作来访问数据。所以不知道你对这有啥疑问?
预计用到的函数有: wavread();读入wav格式的语音信号 fft()快速傅里叶变换 plot()绘制二维图形 randn() 高斯白噪声 示例: x=wavread('filewav');%读取波形文件获得数据 x=x(1:1024);%取前1024点作为处理使用数据 fx=fft(x); figure(1); subplot(211); plot(x); subplot(212) plot(abs(fx)); snr=3; x1=x+snrrandn(1,1024);%添加高斯白噪声 fx1=fft(x1); figure(2); subplot(211); plot(x1) subplot(212); plot(abs(fx1))
直接用两个矩阵相见就可以啦,例如a和b矩阵相减 直接用c=a-b即可 需要注意a和b的矩阵行、列数要相等 比如可以编程 a=[1 1;2 2]; b=[3 4;5 6]; c=a-b
以上就是关于matlab2007降噪创建文件选哪个全部的内容,包括:matlab2007降噪创建文件选哪个、matlab去噪后图像模糊了,怎么去模糊、matlab如何对图像进行椭圆滤波器降噪等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)