#先說明一個錯誤:64*64的圖像分塊(每塊4*4)應該是256塊,不是16塊。
下面是程式
設A是64*64的圖像矩陣
B=mat2cell(A,4*ones(1,16),4*ones(1,16));
B=reshape(cat(3,B{:}),16,[]);%B就是要的矩陣,16行256列
%下面是說明
%大概的關係是這樣的,設A=
� A17 … A241
#� A18 … A242
%∶ ∶ ∶
�6 A19 … A256
%(這裡每個Ai都是4*4的矩陣區塊)
%那麼B=
� B2 B3 … B256
%每個Bi就是對應Ai的16*1列向量
%
%即假設Ai=
� a5 a9 a13
� a6 a10 a14
� a7 a11 a15
� a8 a12 a16
%
%那麼Bi=
�
�
%∶
�6
在MATLAB中把一個矩陣等分成幾個維度相等的矩陣的方法:
利用reshape函數:在command window下輸入:doc reshape。
MATLAB簡介:
MATLAB是美國MathWorks公司出品的商業數學軟體,用於演算法開發、資料視覺化、資料分析以及數值計算的高階技術計算語言和互動式環境,主要包括MATLAB和Simulink兩大部分。
MATLAB是matrix&laboratory兩個字的組合,意為矩陣工廠(矩陣實驗室)。是由美國mathworks公司發布的主要面對科學計算、視覺化以及互動式程式設計的高科技運算環境。它將數值分析、矩陣計算、科學數據視覺化以及非線性動態系統的建模和模擬等諸多強大功能整合在一個易於使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,並在很大程度上擺脫了傳統非互動式程式設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟體的先進水平。
%假設你原有的矩陣是存在變數 in 中
a=nchoosek(1:20,16);%產生20各種取16個的組合,會有4845種,回傳一個4845x16的矩陣
num=size(a,1);%num=4845
choose=true(num,1);
for ii=1:num
temp=in(a(ii,:),:);%取第ii行的組合,形成temp方陣
##d=det(temp);%計算行列式
end
end
chooseout=a(choose,:);%chooseout是nx16的矩陣,n為符合條件的矩陣個數
%可用out=in(chooseout(n,:),:),得到第n個符合條件的矩陣###
以上是使用MATLAB進行影像分塊處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!