matlab图像处理--LBG训练器应用 VQ压缩

I = double(imread('liftingbody.png'));
Bk = 4;
data = im2col(I, [Bk, Bk], 'distinct');
N = size(data, 2);
M = 100;
rng(999)
%随机选100个向量作为中心
rnd = randi([1, N], [1,M]);
centroid = data(:, rnd);%LBG训练次数为10D = zeros([100, N]);for iter = 1 : 10for i = 1 : Mfor j = 1 : ND(i,j) = sum( (centroid(: ,i) - data(:, j)).^2 );endend[~, Grp] = min(D);for i = 1 : Mcentroid(:, i) = mean ( data(:, Grp == i), 2 );end
end%encoding
X = zeros( size(I)/Bk );
MAT = ones([1, M]);
for i = 1 : N[~, X(i)] = min( sum((data(:, i)*MAT - centroid).^2) );
end%decoding
I2 = im2col( zeros(size(I)), [Bk, Bk], 'distinct' );for i = 1 : NI2(:, i) = centroid(:, X(i));
endVQimg = col2im(I2, [Bk, Bk], [size(I, 1), size(I, 2)], 'distinct');imshow(uint8(VQimg))

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部