一、 实验目的

1.读取一个图像文件,并显示图像
2.计算图像的直方图(不可调用imhist等函数,需自行实现从图像到直方图的计算),显示该直方图

二.完整代码

%步骤1:图像读取
A = imread('D:\作业\处理图片.png);

%步骤2:将原图转换为灰度图像
B = rgb2gray(A);   %从RGB创建灰度图
imwrite(B,'D:\电子作业\灰度处理图像.png);   %保存灰度图

%步骤3:显示图像
subplot(2,2,1);     %创建画布
imshow(A);        %显示原图
title('原图','Fontsize',15,'Color','b');   %显示原图标题
subplot(2,2,2);    %创建第二个画布
imshow(B);
title('灰度图,'Fontsize',15,'Color','b');   %显示原图标题

%步骤4:计算直方图
img=imread('D:\电子作业\灰度处理图像.png');
[row,lie,cb]=size(img);
zhi = zeros(1,256);
%记录每个灰度值的像素数目
for i = 1:row
    for j = 1:lie
        k = img(i,j);
        zhi(k+1) = zhi(k+1)+1;
    end
end
    %绘制循环的直方图
subplot(2,2,3);bar(zhi);title('循环bar直方图')

%步骤五:与imhist进行对比
check_zhi = imhist(img);
subplot(2,2,4);imhist(img);title('imhist绘制直方图')

结果展示

实验显示图像与绘制的直方图结果如下
在这里插入图片描述

步骤分析

步骤一:图像读取
从网络上下载一张图片,使用imread函数读取该图像。
在这里插入图片描述
步骤二:将原图转换为灰度图像
使用rgb2gray将原图转换为灰度图像,并保存。
在这里插入图片描述
步骤三:显示图像
创建画布,分别显示原图和灰度图
在这里插入图片描述
步骤四:计算直方图
记录每个灰度值的像素个数,然后作图
在这里插入图片描述
步骤五:与imhist进行对比
将步骤四中计算绘制的直方图与matlab内置函数imhist生成的直方图作对比
在这里插入图片描述

实验结论及分析讨论

1.matlab使用函数总结
(1)imread------图像读入函数
A = imread(‘filename’) ;
从 filename 指定的文件读取图像,并从文件内容推断出其格式。如果 filename 为多图像文件,则 imread 读取该文件中的第一个图像

	(2)rgb2gray()------图像灰度化处理函数

I = rgb2gray(RGB);
rgb2gray函数通过消除色调和饱和度信息,同时保留亮度,将RGB图像转换为灰度图。

	(3)imwrite()------图像写入函数

imwrite(A,‘filename’);
将图像数据A写入filename指定的文件,并从扩展名推断出文件格式。imwrite在当前文件夹中创建新文件,输出图像的位深度取决于A的数据类型和文件格式。

	(4)imshow()------图像显示函数

imshow(I);
在图窗中显示灰度图像I。imshow使用图像数据类型的默认显示范围,并优化图窗、坐标区和图像对象属性以便显示图像。
imshow(‘filename’);
显示存储在由filename指定的图形文件中的图像。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐