matlab空域内图像增强之灰度变换增强

空域内的图像增强就是调整灰度图像的明暗对比度,是对图像中各个像素的灰度值直接进行处理。

灰度变换增强是空域内对图像进行增强的一种简单而有效的方法。灰度变换增强不改变原图像中像素的位置,只改变像素点的灰度值,并逐点进行。为了进行灰度变换,首先要获取灰度图像的直方图。具体实现的代码如下:

close all;clear all;clc;
%获取灰度图像的直方图
I=imread('pout.tif');
row=size(I,1);  %图像的行
col=size(I,2);  %图像的列
N=zeros(1,256);  %创建1行256列的零矩阵
for i=1:row
    for j=1:col
        k=I(i,j);
        N(k+1)=N(k+1)+1;  %统计各个灰度值的像素数 灰度值范围0-255
    end
end
figure,
subplot(121),imshow(I);
subplot(122),bar(N);  %绘制直方图
axis tight;  %设置坐标轴

运行结果如下:

从图中可以看到,图像的灰度值主要集中在80-150之间,因此该图像比较模糊。我们可以通过将图像的灰度值均匀地分布在0-255之间,来将图像变得更加清晰。同时,需要将小于80的灰度值设置为0,大于150的灰度值设置为255。将原图像的灰度值设为x,增强图像的灰度值设为y,则得到以下关系:

化简后得:

接下来我们具体实现调整灰度图像的灰度范围,增强图像

close all;clear all;clc;
%调整灰度图像的灰度范围去增强图像
I=imread('pout.tif');
I=double(I);
J=(I-80)*255/70;  %具体调整方案
row=size(I,1);  %图像的行
col=size(I,2);  %图像的列
for i=1:row
    for j=1:col
        if(J(i,j)<0)  %灰度小于0像素的直接赋值为0
            J(i,j)=0;
        end
        if J(i,j)>255;  %灰度大于255的像素直接赋值为最大的255
            J(i,j)=255;
        end
    end
end
figure;
subplot(121),imshow(uint8(I));  %显示原始图像 显示时,修改图像的数据格式为uint8类型
subplot(122),imshow(uint8(J));  %显示增强结果

可以看到图片给人的感觉是清晰度显著增强。


------坚持下去,少年!------

  • 13
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值