imhist()
对rice.png和增强亮度后的、增强对比度后的图进行直方图展示
%% imhist() 对于brightness 和 contrast的不同
clear all;
% brightness
I=imread('rice.png');
J=imadd(I,50); %每个像素值增加50
%contrast
K=immultiply(I,1.5);
subplot(1,3,1);imhist(I);
subplot(1,3,2);imhist(J);
subplot(1,3,3);imhist(K);
直方图均衡化 histeq()
灰度值范伟变化集中在狭小的范围,直方图均衡化(Equalization)将灰度范围拉大;
%% 直方图均衡化
clear all;
I=imread('pout.tif');
I2=histeq(I);
subplot(1,4,1);imhist(I);
subplot(1,4,2);imshow(I);
subplot(1,4,3);imshow(I2);
subplot(1,4,4);imhist(I2);
二值化
graythresh()函数用于计算二值化变换过程中的最优阈值(threshold).灰度图像上超过该阈值的点将被赋值为1,低于该阈值的点将被赋值为0.
im2bw()用于进行二值化变换.
%% 图像的二值化(灰度图像转为二值图像)
clear all;
I=imread('rice.png');
level=graythresh(I);
bw=im2bw(I,level);
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(bw);
图像的几何变换
图像的几何变换本质上就是将图像乘以一个矩阵得到新图像的过程.
旋转rotate
%% 图像的位置旋转,改变每个像素的位置
clear all;
I=imread('rice.png');
J=imrotate(I,35,'bilinear'); % 35是旋转的角度 bilinear双线性插值算法,补上缺的像素
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J);
size(I);% 得到 [256, 256]
size(J);% 得到 [357, 357]
手动实现均衡化
思路:
找到直方图种横坐标的最大值最小值,遍历矩阵找max、min,将其作为max_new、min_new,放大到0-255
%% 手动实现均衡化
clear all;
max=0; min=300;
I=imread('rice.png');
K=histeq(I);
for i=1:size(I,1)
for j=1:size(I,2)
if max<I(i,j)
max=I(i,j)
elseif min>I(i,j)
min=I(i,j)
end
end
end
distance=max-min;
Z=(double(I)-double(min)).*255/double(distance);
Y=uint8(Z);
subplot(1,3,1);imhist(I);title('原图','FontSize',10);
subplot(1,3,2);imhist(K);title('histeq函数处理后','FontSize',10);
subplot(1,3,3);imhist(Y);title('手动均衡化后','FontSize',10);