matlab图像处理——直方图及直方图均衡化

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]

旋转操作
注意旋转后的size不同,旋转后的size更大一些。

手动实现均衡化

思路:
找到直方图种横坐标的最大值最小值,遍历矩阵找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);

手动均衡化

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值