資源簡介
本程序將一般的卷積運算心矩陣相乘的形式給出,并且可以心大矩陣的形式來顯示卷積核的內容。

代碼片段和文件信息
%?MVM?function:Matrix-Vector-Multiplication
%?MVM?function?has?the?same?function?as?the?matlab?function?conv2(AH‘same‘)
%?X:?input.
%?Y?=?A*XA是由PSF擴展成的大矩陣
function?[YA]?=?convMVM(?X?PSF)
if?size(X?3)?==?3
????X?=?double(rgb2gray(X));
else
????X?=?double(X);
end;
assert(size(PSF?1)?==?size(PSF?2));
H?=?PSF;
Hsize?=?size(H1);
Hoffset?=?(Hsize-1)/2;?%?中心點偏移量
H?=?rot90(rot90(H));??%對矩陣進行180度旋轉
%?X1?=?padarray(X[HoffsetHoffset]);%?根據PSF的大小來擴展圖像矩陣
w=size(X1)+2*Hoffset;
h=size(X2)+2*Hoffset;
[wxhxdimx]?=?size(X);
A?=?zeros(w*h);?%?初始化由PSF擴展后的大矩陣
%?A=sparse(w*hw*h0);
%?A=full(A);
%?form?matrix?A
???????for?i?=?1+Hoffset:w-Hoffset
????????????for?j?=?1+Hoffset:h-Hoffset
????????????????n?=?-Hoffset;
????????????????for?k?=?1:Hsize
????????????????????m?=?-Hoffset;
????????????????????for?l?=?1:Hsize
????????????????????????A(w*(j-1)+iw*(j+n-1)+i+m)?=?H(lk);?????????????????????????????
????????????????????????m?=?m+1;
????????????????????end
????????????????????n?=?n+1;
????????????????end
????????????end
????????end
%?A(all(A==02):)?=?[];?%去掉A中全為零的行,也即擴展后多余的圖像像素
%?A(find(sum(abs(A)2)==0):)=[];
B?=?zeros(wx*hxw*h);?%?用來提取A中應該保留的列,即實際參與運算的圖像像素
i?=?1;j?=?w*Hoffset+Hoffset+1;
while?i?<=?wx*hx
????B(i:)?=?A(j:);
????if(mod(iwx)==0)
????????j?=?j-wx+1+w;
????else
????????j?=?j+1;
????end
????i?=?i+1;
end
C?=?zeros(wx*hx);?%?用來提取A中應該保留的列,即實際參與運算的圖像像素
i?=?1;j?=?w*Hoffset+Hoffset+1;
while?i?<=?wx*hx
????C(:i)?=?B(:j);
????if(mod(iwx)==0)
????????j?=?j-wx+1+w;
????else
????????j?=?j+1;
????end
????i?=?i+1;
end
%?the?output:?Y=A*X
??X?=?X(:);
??A?=?C;
??Y?=?A*X;
??Y?=?reshape(Y[wxhx]);
%???disp(‘A?is?the?extended?PSF?matrix‘);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-09-13?15:47??MVM\
?????文件???????12495??2011-07-09?19:48??MVM\Unti
?????文件?????????419??2011-07-09?19:41??MVM\textMVM.m
?????文件????????2685??2011-09-13?15:47??MVM\lena1.jpg
?????文件????????4468??2011-07-08?14:56??MVM\lena.jpg
?????文件??????263222??2011-06-13?15:17??MVM\lena.bmp
?????文件???????69632??2011-07-09?19:20??MVM\cppMVM_mex.mexw32
?????文件????????1135??2011-07-09?19:26??MVM\cppMVM.m
?????文件????????5193??2011-04-11?12:09??MVM\convolve2.m
?????文件????????1860??2011-09-13?15:42??MVM\convMVM.m
?????目錄???????????0??2011-07-09?19:34??MVM\codegen\
?????目錄???????????0??2011-07-09?19:34??MVM\codegen\mex\
?????目錄???????????0??2011-07-09?19:48??MVM\codegen\mex\cppMVM\
?????文件????????2318??2011-07-09?19:19??MVM\codegen\mex\cppMVM\mexopts.bat
?????目錄???????????0??2011-07-09?19:49??MVM\codegen\mex\cppMVM\html\
?????文件??????????67??2011-07-09?19:20??MVM\codegen\mex\cppMVM\cppMVM_mex_mex.def
?????文件??????????88??2011-07-09?19:16??MVM\codegen\mex\cppMVM\cppMVM_mex_mex.arf
?????文件????????1724??2011-07-09?19:20??MVM\codegen\mex\cppMVM\cppMVM_mex_lccstub.obj
?????文件?????????547??2011-07-09?19:20??MVM\codegen\mex\cppMVM\cppMVM_mex.mki
?????文件????????2298??2011-07-09?19:20??MVM\codegen\mex\cppMVM\cppMVM_mex.mk
?????文件???????69632??2011-07-09?19:20??MVM\codegen\mex\cppMVM\cppMVM_mex.mexw32
?????文件????????4808??2011-07-09?19:20??MVM\codegen\mex\cppMVM\cppMVM_mex.lib
?????文件?????????143??2011-07-09?19:20??MVM\codegen\mex\cppMVM\cppMVM_mex.exp
?????文件?????????981??2011-07-09?19:20??MVM\codegen\mex\cppMVM\cppMVM_mex.bat
?????文件????????2497??2011-07-09?19:20??MVM\codegen\mex\cppMVM\buildInfo.mat
?????文件????????5716??2011-07-09?19:49??MVM\codegen\mex\cppMVM\html\MVM1_watch.html
?????文件???????17971??2011-07-09?19:49??MVM\codegen\mex\cppMVM\html\MVM1_mcode.html
?????文件???????19665??2011-07-09?19:49??MVM\codegen\mex\cppMVM\html\index.html
?????文件????????5111??2011-07-09?19:20??MVM\codegen\mex\cppMVM\html\contents_file.tmp
評論
共有 條評論