图像量化函数——matlab版
代码片
.
// An highlighted block
function ouput_img = quantize(input_img,level)
% quantize 图像量化函数
% input_img:输入图像
% level: 给定的图像灰度级数
% ouput_img:输出图像
src = double(input_img);% 将输入图像转为double型,便于后续取整操作
[m, n] = size(src);
k = level/256; %计算量化前后的比值
dst = zeros(m,n,'uint8'); % 建立8为无符号的图像
res = zeros(m,n,'uint8');
for i = 1 : n
for j = 1 : m
dst(j,i) = fix(k*src(j,i)); %向零取整
end
end
% 寻找图像中的最大、最小灰度值
max_dst = 0;
min_dst = 255;
for i = 1 : n
for j = 1 : m
if dst(j,i)> max_dst
max_dst = dst(j,i);
end
if dst(j,i)< min_dst
min_dst = dst(j,i);
end
end
end
%将图像灰度值映射到0~255之间
for i = 1 : n
for j = 1 : m
res(j,i) = round(dst(j,i)*(255/(max_dst - min_dst)));
end
end
ouput_img = res;
end