实验一 图像基本操作及点处理(源代码一站式复制粘贴)

下载入口:作者本人提交的作业压缩包,包含源码和文档,供大家学习交流

一、实验目的

1.掌握读、写图像的基本方法。
2.掌握MATLAB语言中图像数据与信息的读取方法。
3.理解图像灰度变换处理在图像增强的作用。
4.掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方法。

二、实验原理

灰度变换是图像增强的一种重要手段,它常用于改变图像的灰度范围及分布,是图像数字化及图像显示的重要工具。
1.图像反转
灰度级范围为[0, L-1]的图像反转可由下式获得

2.对数运算:
有时原图的动态范围太大,超出某些显示设备的允许动态范围,如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换:
s = clog(1 + r),c为常数,r≥ 0
3.幂次变换:

4.对比拉伸:
在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展与拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸:

其对应的数学表达式为:

5.直方图均衡化
灰度直方图的横坐标是灰度级,纵坐标是该灰度级频率,它是图像最基本的统计特征。依据定义,在离散形式下,用rk代表离散灰度级,用pr(rk)代表pr®,且有下式成立:

式中,nk为图像中出现rk级灰度的像素数,n是图像像素总数,而nk/n即为频数。
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。假定变换函数为

当灰度级是离散值时,可用频数近似代替概率值,即

式中,l是灰度级的总数目,pr(rk)是取第k级灰度值的概率,nk是图像中出现第k级灰度的次数,n是图像中像素总数。
所以积分可以表示为下列累计分布函数

三、实验内容与要求

熟悉MATLAB语言中对图像数据读取,显示等基本函数,特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、subplot()函数、figure()函数。

  1. 将MATLAB目录下work文件夹中的任一图像文件读出。用到imread、imfinfo等函数,观察一下图像数据,将这个图像显示出来。读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果,感受图像灰度变换处理在图像增强的作用。
  2. 绘制图像灰度直方图的方法,对图像进行均衡化处理
    将MATLAB目录下work文件夹中的图像文件读出,用rgb2gray()将其转化为灰度图像,记为变量B。请自己编程和调用Matlab函数完成如下实验。
    1) 显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别。
    2) 对B进行直方图均衡化处理,试比较与原图的异同。
    3) 对B进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。

图1.1 分段线性变换函数

四、实验的具体实现

请同学们将上述的实验要求按步骤写在下面(代码+实验结果+分析)。

RGB = imread('lenna_RGB.tif');
%读出原始RGB图像
imshow(RGB)

B = rgb2gray(RGB);
%新增画布2
figure
%输出灰度B图像
imshow(B)

%新增画布3
figure
%输出灰度直方图
imhist(B)

J = imadjust(B,[0.0, 0.86],[0.0,1.0]);
%新增画布4
figure
%读出调整后的图像
imshow(J)
%新增画布5
figure
%读出调整后的图像的灰度直方图
imhist(J)

%对B进行直方图均衡化处理
balance = histeq(B);
%新增画布6
figure
subplot(1,2,1)
imshow(B)
subplot(1,2,2)
imshow(balance)


%新增画布7
figure
%分段线性变换
subplot(2,2,1);
imshow(balance);%显示原图像
title('直方图均衡化图像');
%分段线性变换
[M,N]=size(B);
B=im2double(B);
out=zeros(M,N);
X1=0.125;Y1=0.25;
X2=0.75;Y2=0.625;
for i=1:M
    for j=1:N
        if B(i,j)<X1
            out(i,j)=Y1*B(i,j)/X1;
        elseif B(i,j)>X2
            out(i,j)=(B(i,j)-X2)*(1-Y2)/(1-X2)+Y2;
        else
            out(i,j)=(B(i,j)-X1)*(Y2-Y1)/(X2-X1)+Y1;
        end
    end
end
subplot(2,2,2);
imshow(out);
title('变换后图像')
%绘制直方图
subplot(2,2,3);
imhist(balance);
title('直方图均衡化处理图像');
subplot(2,2,4);
imhist(out);
title('变换后图像')



五、下载入口

下载入口:作者本人提交的作业压缩包,包含源码和文档,供大家学习交流

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m明月Java3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值