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效果更好。
至於其他的語句,建議你把這篇文章下載下來,看看,文章中講述的去霧原理其實很簡單,講的也很清楚。但是這個源代碼好像有些地方和他講的不太一樣,這不本質。