将JPG格式的彩色图像文件灰度化并进行直方图均衡

2024-02-24 13:48

本文主要是介绍将JPG格式的彩色图像文件灰度化并进行直方图均衡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

%  数字图像处理程序作业
%  本程序能将JPG格式的彩色图像文件灰度化并进行直方图均衡
%
%  输入文件:c:/test.jpg      待处理图像
%  输出文件:PicSampleGray.bmp  灰度化后图像
%            PicEqual.bmp       均衡化后图像
%
%  输出图形窗口说明
%  figure NO 1                  待处理彩色图像
%  figure NO 2                  灰度化后图像
%  figure NO 3                  直方图
%  figure NO 4                  均衡化后直方图
%  figure NO 5                  灰度变化曲线
%  figure NO 6                  均衡化后图像
%  1, 处理的图片名字要为 PicSample.jpg
%  2, 程序每次运行时会先清空workspace
 

clear all
%一,图像的预处理,读入彩色图像将其灰度化
PS=imread('c:/test.jpg');  %读入JPG彩色图像文件
figure;
imshow(PS)                                %显示出来  figureNO 1                              
title('输入的彩色JPG图像')
imwrite(rgb2gray(PS),'PicSampleGray.bmp');             %将彩色图片灰度化并保存
PS=rgb2gray(PS);                                       %灰度化后的数据存入数组
figure,imshow(PS)                                      %显示灰度化后的图像,也是均衡化前的样品   figure NO 2
title('灰度化后的图像')

%二,绘制直方图
[m,n]=size(PS);                                        %测量图像尺寸参数
GP=zeros(1,256);                                       %预创建存放灰度出现概率的向量
for k=0:255
    GP(k+1)=length(find(PS==k))/(m*n);                 %计算每级灰度出现的概率,将其存入GP中相应位置
end
figure,bar(0:255,GP,'g')                                    %绘制直方图                                    figure NO 3
title('原图像直方图')
xlabel('灰度值')
ylabel('出现概率')

%三,直方图均衡化
S1=zeros(1,256);
for i=1:256
    for j=1:i
         S1(i)=GP(j)+S1(i);                              %计算Sk
    end
end
 S2=round(S1*256);                                       %将Sk归到相近级的灰度
for i=1:256
    GPeq(i)=sum(GP(find(S2==i)));                        %计算现有每个灰度级出现的概率                  
end
figure,bar(0:255,GPeq,'b')                                   %显示均衡化后的直方图                        figure NO 4
title('均衡化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
figure,plot(0:255,S2,'r')                                    %显示灰度变化曲线                            figure NO 5
legend('灰度变化曲线')
xlabel('原图像灰度级')
ylabel('均衡化后灰度级')

%四,图像均衡化
PA=PS;
for i=0:255
    PA(find(PS==i))=S2(i+1);                             %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA)                                        %显示均衡化后的图像                           figure NO 6
title('均衡化后图像')
imwrite(PA,'PicEqual.bmp'); 

这篇关于将JPG格式的彩色图像文件灰度化并进行直方图均衡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742295

相关文章

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.