(MATLAB 空間週期性雜訊的一種通用處理方法

2021-10-12 03:25:23 字數 3128 閱讀 3015

本文的目的在於處理影象**現的週期性雜訊,使用的語言是matlab

常見的結構有線狀週期性結構,蜂窩狀週期性結構等,總而言之,影象**現了某種結構並這種結構在影象中重複出現,這樣的週期性結構會對影象的原有資訊或者影象質量產生影響。為了能夠使演算法對各種週期性雜訊具有處理通用性,演算法中構建頻域濾波器時是需要互動式構建

本文的整體處理思路是:

空間的週期性結構在頻域會在週期性重複方向的垂直方向上產生布局極值

一種頻域處理週期性雜訊的通用方法

clear; close all;

[filename, pathname] = uigetfile(, '選擇');

img_i = imread([pathname, filename]);

img_gray = rgb2gray(img_i);

fi=fft2(img_gray);

fci=fftshift(fi);

fmi=log(abs(fci));

ufmi=fmi;                     

figure(2),imshow(ufmi,)

prompt = '通過觀察影象頻域,選擇想要去除的頻域區域個數'

num = input(prompt);

%濾波函式初始化

[m,n] = size(fmi);

i=1;

window = ones(m,n);

while (i<=num)

figure(2),imshow(ufmi,); %顯示原影象

hold on

title(['\fontsize通過畫矩形去除你想要去除的頻率(還剩',num2str(num+1-i),'個區域)']);

set(gcf,'outerposition',0.8*get(0,'screensize'));

% h=imrect; %滑鼠變成十字,用來選取感興趣區域

h=imellipse;

pos=getposition(h); %圖中就會出現可以拖動以及改變大小的矩形框,獲取選好的位置

x1=ceil(pos(1)); %獲取矩形的對角座標

x2=ceil(pos(1))+ceil(pos(3));

midx = (x1+x2)/2;

y1=ceil(pos(2));

y2=ceil(pos(2))+ceil(pos(4));

midy = (y1+y2)/2;

%畫出要構建的頻率選擇器

for x=1:n

for y=1:m

if x>=x1&&x<=x2&&y>=y1&&y<=y2

dis = sqrt((x-midx)^2+(y-midy)^2);

if dis<=min(abs(y1-midy),abs(x1-midx))

window(y,x) = 0;%要去除的視窗設定為零

end%

endend

endufmi = ufmi.*window;

img_r = img_i(:,:,1);

img_g = img_i(:,:,2);

img_b = img_i(:,:,3);

%處理r通道

fi=fft2(img_r);

fci=fftshift(fi);

fci_out= fci .* window; % 原影象頻譜乘以繪製的頻率選擇器

fi_out=ifftshift(fci_out);

img_outr = ifft2(fi_out); % 變換回空域

%處理g通道

fi=fft2(img_g);

fci=fftshift(fi);

fci_out= fci .* window; % 原影象頻譜乘以繪製的頻率選擇器

fi_out=ifftshift(fci_out);

img_outg = ifft2(fi_out); % 變換回空域

%處理b通道

fi=fft2(img_b);

fci=fftshift(fi);

fci_out= fci .* window; % 原影象頻譜乘以繪製的頻率選擇器

fi_out=ifftshift(fci_out);

img_outb = ifft2(fi_out); % 變換回空域

result = cat(3,uint8(abs(img_outr)),uint8(abs(img_outg)),uint8(abs(img_outb)));

figure(3),subplot(1,2,2),imshow(result); title(['\fontsize實時處理後影象顯示']);

subplot(1,2,1),imshow(ufmi,) ,title( ['\fontsize濾波後頻域']);

i=i+1;

end

[filename,pathname]=uiputfile('all files(*.*)''請輸入儲存影象名字');

pathfile=[pathname filename];

imwrite(result,pathfile,'jpg');

空間週期性結構在頻域上會出現區域性極大值,並且符合:

f=1/t (1)

其中t是空間週期結構的重複週期,會在頻域f處產生較大的值;

本文中處理影象中,週期性結構是乙個類似於正六邊形的結構,所以在空間上可以看成是六個邊在空間重複,因此這樣的雜訊會在頻域產生乙個正六邊形的亮點,理解了週期結構對頻域的影響,就可以有效構建去除週期性雜訊結構相應的頻域,進而去除空域中的雜訊。

①簡單對空域進行低通濾波也可以去除週期性雜訊,但是有兩個缺點:

由於去除掉了原有非雜訊的高頻,得到的影象過於平滑;

對於空間週期較大的結構,處理效果不佳;

②採用帶通濾波器不能適應每種週期性結構雜訊;

函式的週期性

1 週期函式 對於函式 y f x 如果存在乙個非零常數 t 使得當 x 取定義域內的任何值時,都有 f x t f x 那麼就稱函式 y f x 為週期函式,稱 t 為這個函式的週期。如果 cdots 那麼 cdots 句式,說明不是所有的函式都滿足 f x t f x 即有些函式不是週期函式。2...

通過Matlab 使用 FFT 分析週期性資料

前言 天文學家使用蘇黎世太陽黑子相對數將幾乎 300 年的太陽黑子的數量和大小製成 對大約 1700 至 2000 年間的蘇黎世數繪圖。load sunspot.dat year sunspot 1 relnums sunspot 2 plot year,relnums xlabel year yl...

hudson的週期性自動構建規則

hudson有兩種自動構建模式 1 迴圈檢查是否 庫有新提交的內容決定是否構建 適用於svn等cvcs 2 週期性自動構建 在專案的設定 build triggers中,有關於這兩項的設定 poll scm 這是ci 系統中常見的選項。當您選擇此選項,您可以指定乙個定時作業表示式來定義hudson每...