卷積運算元的矩陣向量乘積表示&一維離散降質模型

劉小昱大人發表於2019-04-15

@影象處理入門學習知識(一)

卷積運算元的矩陣向量乘積表示&一維離散降質模型

在影象處理過程中,有時候我們需要將卷積運算轉化為矩陣乘積運算,這也是離散降質模型構成的基礎,那麼怎麼將卷積乘法轉化為矩陣向量乘法呢 。我們可以運用有關迴圈矩陣Toepliz矩陣的特點來構造卷積矩陣。本文先介紹一維離散降質模型轉換過程及部分程式碼。

一維影象離散降質模型

在一維離散系統中,設輸入訊號f(x)與加性噪聲n(x)長度為A, h(x)為B點長度的衝激響應函式,為了避免各個週期重疊,將f(x)、n(x)、h(x)補零延拓至長度N≥A+B-1, 得到fe(x)、ne(x)、he(x),可表示為:
fe(x)={f(x),0xA10,AxN1(1.1.1)he(x)={h(x),0xB10,BxN1(1.1.2)ne(x)={n(x),0xA10,AxN1(1.1.3) \begin{array}{l} {\rm{f}}_{\rm{e}} {\rm{(x) = }}\left\{ \begin{array}{l} {\rm{f(x),0}} \le {\rm{x}} \le {\rm{A - 1}} \\ {\rm{0,A}} \le {\rm{x}} \le N{\rm{ - 1}} \\ \end{array} (1.1.1) \right. \\ h_{\rm{e}} {\rm{(x) = }}\left\{ \begin{array}{l} {\rm{h(x),0}} \le {\rm{x}} \le B{\rm{ - 1}} \\ {\rm{0,B}} \le {\rm{x}} \le N{\rm{ - 1}} \\ \end{array}(1.1.2) \right. \\ n_{\rm{e}} {\rm{(x) = }}\left\{ \begin{array}{l} {\rm{n(x),0}} \le {\rm{x}} \le {\rm{A - 1}} \\ {\rm{0,A}} \le {\rm{x}} \le N{\rm{ - 1}} \\ \end{array}(1.1.3) \right. \\ \end{array}
根據卷積定理可得,一維離散降質模型用離散卷積形式表示為:
ge(x)=fe(x)he(x)+ne(x)=0N1fe(n)fe(xn)+ne(x)(1.1.4) g_{\rm{e}} (x) = {\rm{f}}_{\rm{e}} (x) * h_{\rm{e}} (x) + n_{\rm{e}} (x) = \sum\limits_0^{N - 1} {f_{\rm{e}} (n)} f_{\rm{e}} (x - n) + n_{\rm{e}} (x) (1.1.4) 式中,x=0,1,2,···,N-1。將上式(1.1.4)卷積形式用矩陣向量表示為:
g=Hf+n {\rm{\bf{g} = \bf{Hf} + \bf{n}}}
卷積矩陣H\bf{H}he(x)h_e(x)的矩陣形式, H\bf{H}為迴圈矩陣,上式中,g\bf{g}f\bf{f}n\bf{n}均為N維列向量,如下:

在這裡插入圖片描述
若不新增噪聲項n進行測試,此時則有Hf=f(x)h(x){\bf{Hf}=f(x)*h(x)}“*”代表卷積運算,結果如下:

在這裡插入圖片描述

matlab程式碼:


function [M,X] = TMtx1(x,h)%一維離散降質模型 
[m1,n1]=size(x); %n1為x的元素個數
[m2,n2]=size(h); %n2為h的元素個數
N=n1+n2-1;       %補零延拓,避免週期重疊產生誤差
x(N)=0;
x(N)=0;
h(N)=0;
x1=x;
h1=h;
% 構建延拓矩陣 N
x2 = x1(:);
h2 = h1(:); 
%% 迴圈矩陣方法一
t=zeros(1,N);
t(1)=h2(1);
t(1,2:N)=h2(N:-1:2);
M = toeplitz(h2,t);
X = x1(:);
%% 方法二 迴圈矩陣
% A=zeros(N,N);
% A(1,1)=h2(1);
% A(1,2:N)=h2(N:-1:2);
  %第一行
%  for i=2:N            %i為行數
%      A(i,1)=A(i-1,N);  %第i行的第一列與最後一列的關係
%      A(i,2:N) =A(i-1,1:N-1); % 第i行的第其他列與上一行的關係
%  end       
end  


相關文章