1. 请问如何在matlab中对信号进行去噪操作。最好用函数的形式,方便其他程序调用
去噪有很多种方法,现在小波去噪最为常用,在matlab中有自带的函数进行小波去噪,简单易行。最常用且简单的是阈值去噪,用函数ddencmp()生成信号的默认阈值,然后利用函数wdencmp()进行去噪。如:
%对含噪信号s进行3层小波分解
[c,l]=wavedec(s,3,'db1'); %s为含噪信号,3为小波分解层数,db1为采用的小波基
%获取信号默认值
[thr,sorh,keepapp]=ddencmp('den','wv',s);
%参数den代表去噪,wv代表小波,s代表含有噪声的信号
%实现去噪过程
s2=wdencmp('gbl',c,l,'db1',3,thr,sorh,keepapp);
%参数gbl表示采用全局去噪
2. matlab 怎样把图像去云雾算法
function darktest(filename)
%暗影去雾算法
%filename------文件名或文件绝对路径
%用法:darktest('7.png')
close all
clc
w0=0.65; %0.65 乘积因子用来保留一些雾,1时完全去雾
t0=0.1;
I=imread(filename);
figure;
set(gcf,'outerposition',get(0,'screensize'));
subplot(221)
imshow(I);
title('原始图像');
[h,w,s]=size(I);
min_I=zeros(h,w);
%下面取得暗影通道图像
for i=1:h
for j=1:w
dark_I(i,j)=min(I(i,j,:));
end
end
subplot(223)
imshow(dark_I);
title('dark channnel的图形');
Max_dark_channel=double(max(max(dark_I))) %天空亮度
dark_channel=double(dark_I);
t=1-w0*(dark_channel/Max_dark_channel); %取得透谢分布率图
subplot(224)
T=uint8(t*255);
3. MATLAB代码 求分析 何的去雾算法里面的暗通道算法 每一句都是什么意思啊又分别对应论文里的什么原理
function dark = darkChannel(imRGB)
r=imRGB(:,:,1);
g=imRGB(:,:,2);
b=imRGB(:,:,3); 分别提取三色的灰度图
[m n] = size(r); 提取单色图矩阵的宽度和长度
a = zeros(m,n); 创建m*n的零矩阵a
for i = 1: m
for j = 1: n
a(i,j) = min(r(i,j), g(i,j));
a(i,j)= min(a(i,j), b(i,j)); 依次比较三色分量的最小值提取为暗通道图
end
end
d = ones(15,15); 创建15*15的单位矩阵
fun = @(block_struct)min(min(block_struct.data))*d;
dark = blockproc(a, [15 15], fun); 将图片分成15*15的小块并将每一块变成其中的最小值
dark = dark(1:m, 1:n);
我也是新手啊兄弟只能帮你到这儿了
4. 快速去雾算法的MATLAB代码,谁帮我看看哪错了
首先您很多行结尾都忘记写分号了。。。
其次,这里
dc2 = minfilt2(dc, [krnlsz,krnlsz]);
minfilt2不是内置的函数,你需要在matlab官网上下载这个文件
http://www.mathworks.com/matlabcentral/fileexchange/1358
把这个m文件放在工作路径下面就没问题了。
5. “基于单幅图像的去雾算法研究”的matlab代码中会出现Out of memeroy 的问题,我应该怎样解决呢
这是2009年香港中文大学学生何恺明发表在CPVR上的文章《Single Image Haze Removal Using Dark Channel Prior》的源代码,但应该不是他本人写的。
图像是由一个个像素点组成的,而文章中对像素点的操作是针对以这个像素点为中心、大小为15*15的矩形区域进行的,所以win_size=7.其实定义为多少都没关系,可能在他看来7效果更好。
至于其他的语句,建议你把这篇文章下载下来,看看,文章中讲述的去雾原理其实很简单,讲的也很清楚。但是这个源代码好像有些地方和他讲的不太一样,这不本质。