本文用matlab实现降低图片的分辨率,假设一张500万像素的图片,使用该方法可以将像素降低到5万,但通过观察降低后的直方图 ,发现并没有多少区别。
实现具体思路:
将彩色图片灰度化后,获得其灰度直方图。确定其图片的长L和宽W,然后对其矩阵进行操作。L和W均设置步长为10,获得一个(L/10)*(W/10)的矩阵,接着显示该直方图。
结果如图所示:
(1)曝光不足
实验结果:
(2)曝光正常
实验结果:
(3)过度曝光
实验结果:
matlab实验代码:
clear;clc;
image=imread('3.jpg');
%转化灰度图
if size(image,3)>1image=rgb2gray(image);
end
[M,N]=size(image);
hist_im=imhist(image); %计算直方图
subplot(121);
bar(hist_im);%画直方图
title('原图灰度化的直方图');
%采样化后的矩阵大小
X=floor(M/10);
Y=floor(N/10);
x=1;y=1;
%采样化后的矩阵
A=zeros(X,Y);
%进行采样,每行和每列均隔十个一取
for m=1:10:Mfor n=1:10:NA(x,y)=image(m,n);y=y+1;if(y>Y)x=x+1;y=1;endend
end
%A为采样后的矩阵,类型是double,将其强制转化为uint8
A=uint8(A);
if size(A,3)>1A=rgb2gray(A);
end
histA_im=imhist(A);
subplot(1,2,2);
bar(histA_im);
title('采样化后的灰度化直方图');