我有一個來自611張圖像(尺寸3x611)ROI的平均RGB像素值陣列。圖像拍攝時間超過64秒。我將每種顏色流的平均值解釋爲隨時間變化的信號並將其繪製在Matlab中。我還使用fft()繪製功率譜。在這個功率譜中,我在低頻範圍內獲得了巨大的數值。我想刪除這些值,因此需要一個截止頻率爲0.2 Hz的高通濾波器。此外,我希望這個濾波器非常清晰,完全抑制頻率低於0.2 Hz的功率,並保持頻率大於0.2 Hz的功率。請建議一種方法來做到這一點。在Matlab中應用高通濾波器信號
代碼,我拿綠色河流
imageFiles = dir('*.png');
noFiles = length(imageFiles); % Number of files found
avgVals = zeros(noFiles,3);
noise = 0; %Boolean for noise: if 1, then ROI moves randomly
noiseV = 0;
noiseH = 0;
for i=1:noFiles
curFileName = imageFiles(i).name;
curImage = imread(curFileName);
temp1 = curImage(175:215 , 290:385, 1);
avgVals(i,1) = (sum(sum(temp1)'))/3936;
temp2 = curImage(175:215 , 290:385, 2);
avgVals(i,2) = (sum(sum(temp2)'))/3936;
temp3 = curImage(175:215 , 290:385, 3);
avgVals(i,3) = (sum(sum(temp3)'))/3936;
end
Rstream = avgVals(:,1);
Gstream = avgVals(:,2);
Bstream = avgVals(:,3);
%plot actual signal with respect to time
xAxis = (0:64/610:64);
plot(xAxis,Rstream,'r');
hold on;
plot(xAxis,Gstream,'g');
hold on;
plot(xAxis,Bstream,'b');
nfft = 1024;
R = fft(Rstream,nfft);
R = R(1:nfft/2);
mR = abs(R);
G = fft(Gstream,nfft);
G = G(1:nfft/2);
mG = abs(G);
B = fft(Bstream,nfft);
B = B(1:nfft/2);
mB = abs(B);
f=(0:nfft/2-1)*(611/64)/nfft;
figure(2);
plot(f,mG,'g');
感謝的功率譜。任何幫助,將不勝感激。
非常感謝。 detrend完美運作。 –