数字图像处理-采样量化(Matlab)
均匀采样
假设原始图片空间分辨率为512X512,从该图像中,每隔一行删去一行和每隔一列删去一列可以得到256X256的图像,既2X2=4倍降采样,从256X256的图像中,每隔一行删去一行和每隔一列删去一列可得到128X128的图像,等价于对512X512原图像进行4X4=16倍降采样。
%--------Matlab函数-------
% a=
% 1 2 3 4 5
% 1 2 3 4 5
% 1 2 3 4 5
% 1 2 3 4 5
% 1 2 3 4 5
a=a(1:2:end,1:2:end); % 每隔一行重新采样一个点和每隔一列重新采样一个点
量化
假设原始图像灰度级分辨率为256,即 2 8 = 256 2^8=256 28=256,此时图像的各个像素点的灰度值介于[0,255],当灰度级分辨率降为32,即 2 5 = 32 2^5=32 25=32,图像的各个像素点灰度值介于[0,31],灰度分辨率越低,图像的视觉效果越差。
%--------Matlab函数-------
histeq(pic,level); %pic为输入图像,level为指定直方图均衡化后的灰度级数
代码块
clear;
close all;
pic1=imread('lena512.bmp');
figure('name','降采样');
for i=1:6
repic1=pic1(1:2^i:end,1:2^i:end); %从第一行第一列开始,间隔2^i采样一个点,如,1,3,5,7 因为是行和列分别间隔,所以采样倍数为(2^i)^2
str=num2str(2^(9-i)); %整形数字转成字符串
str1=num2str((2^i)^2); %采样倍数: 512*512->256*256 (2^1)^2=4倍
subplot(2,3,i); %绘图2行3列,第i个
imshow(repic1);
title([[[[[str,'*'],str],' '],str1],'倍']); %拼接字符串 str*str
end %for循环记得用end结束
level=[64,32,16,8,4,2];
figure('name','量化');
for i=1:6
repic2=histeq(pic1,level(i)); %调整灰度等级
str=num2str(level(i));
subplot(2,3,i);
imshow(repic2);
title(['灰度等级',str]);
end
运行结果
- 降采样:
- 量化:
转载:https://blog.csdn.net/qq_23023937/article/details/109158324
查看评论