1 除錯前準備
1)利用matlab生成 .img 影象檔案
[plain]view plain
copy
clear variables;
filename='**';
im=imread(filename);
im=rgb2gray(im);
f=fopen([filename(1:end-4) '.img'],'wb');
for i=1:size(im,2)
for j=1:size(im,1)
fwrite(f,im(j,i),'uint8');
end
end
fclose(f);
2) 利用matlab檢視 .img 影象檔案
[plain]view plain
copy
clear variables;
f=fopen('**.img','rb');
%haha=fread(f,inf,'uint8');
haha=fread(f);
haha1=reshape(haha,800,1280);
haha2=zeros(800,1280);
for i=1:800
for j=1:1280
haha2(i,j)=haha((j-1)*800+i);
end
end
fclose(f);
2 輸入引數格式
1)trvqsp_img:獲得影象向量量化的碼書
呼叫引數格式:
trvqsp_img ts_img codefile [-b cb_size] [ -t block_height] [-w block_width] [-x row_size][-y col_size] [-h]
ts_img:是訓練影象,也即待量化壓縮的影象,假定為8位灰度級,使用光柵掃瞄順序儲存。
codefile:以二進位制格式存放碼書的檔案,有乙個包含12個位元組的檔案頭記錄:向量的維度,以及碼書的大小。
-b cb_size:碼書的大小
-t block_height:塊的高度(以畫素為單位)
-w block_width:塊的寬度(以畫素為單位)
實際上由block_width 、block_height決定著碼書向量的大小,也即每個輸出塊的大小。因此向量的維數是block_height *block_width
-x row_size:輸入影象的寬
-y col_size:輸入影象的高
-h 幫助
此處引數輸入可採用.bat檔案:
2)vqimg_enc:根據碼書對影象進行向量量化
呼叫格式:
vqimg_enc [-i imagein] [-o cmpfile] [-c codebook] [-x row_size] [-y col_size] [-h]
-i imagein:輸入的待編碼的影象檔名
-o cmpfile:輸出的量化壓縮後的檔名
-c cmpfile:碼書檔案
-x row_size:輸入影象的寬
-y col_size:輸入影象的高
-h 幫助
此處引數輸入可採用.bat檔案:
3)vqimg_dec:根據碼書檔案和壓縮後的檔案重構原始影象
呼叫格式:
vqimg_dec [-i cmpfile] [-o imageout] [-h]
-i cmpfile:壓縮檔案名
-o imageout:重建影象檔名
-h 幫助
此處引數輸入可採用.bat檔案:
3 測試結果
1)影象大小:256*256 畫素
i 美女.img
ii 狒狒.img
2)影象大小:512*512 畫素
i 辣椒.img
3)影象大小:800*1280 畫素
i 花.img
附:所用原圖
i 美女
ii 狒狒
iii 辣椒
iv 花
向量量化程式除錯結果
向量量化編碼也是在影象 語音頻號編碼技術中研究得較多的新型量化編碼方法,它的出現並不僅僅是作為量化器設計而提出的,更多的是將它作為壓縮編碼方法來研究的。在傳統的 和變換編碼中,首先將訊號經某種對映變換變成乙個數的序列,然後對其乙個乙個地進行標量量化編碼。而在向量量化編碼中,則是把輸入資料幾個一組地分...
學習向量量化
與 k 均值演算法類似,學習向量量化 learning vector quantization,簡 稱 lvq 也是試圖找到一組原型向量來刻畫聚類結構,但與一般聚類演算法不同 的是,lvq 假設資料樣本帶有類別標記,學習過程利用樣本的這些監督資訊來 輔助聚類.可看作通過聚類來形成 類別 子類 結構,...
LVQ學習向量量化
現在已經2011年五月份了,今年的兩個多月幾乎沒什麼成果,想到水樣年華這個詞,額!總結過往,翹首未來,心中不免些許迷茫,程式設計師之路在何方?靡靡之音,不絕於耳,然何時我也能奏一首陽春白雪,不為流傳於世,只求一心靈安靜之所!lvq原理不再贅述,其本質可以看成是最近鄰分類,所謂競爭性神經網路,即把歐氏...