图像灰度变换及实现

图像处理----灰度变换,图像反转,对数变换,幂次变换,位图切割,直方图显示,直方图均衡,直方图匹配 (数字图像处理matlab实现 ) 灰度变换 灰度 灰度可以认为是亮度,灰色图片中黑白的深浅程度,范围一般为0~255。图像数字化为二维矩阵后,每个点的值都代表一个像素点的灰度值。 灰度级 灰度值的表示范围,灰度级时,称图片为k比特图片。当然灰度级越高,图片的细节则越清晰,因为有更多的灰度值来描述图片。但是灰度级越大,图片所需要的存储空间也会越大,因此一般会采用256灰度级。 灰度变换 空间滤波 空间域处理图... 阅读详情

灰度变换是空间域图像处理技术中最基础的技术,常用的转换有图像反转、对数变换和伽马(幂律)变换。


图像反转


图像反转的原理很简单,就是颠倒黑白的运算,处理后的效果看起来像是原图的底片,对于一个8bit的灰度图像,变换公式为:


s=255-1-r;


opencv实现:

[cpp]  view plain  copy
 print ?
  1. #include <opencv2/highgui/highgui.hpp>  
  2.   
  3. using namespace cv;   
  4.   
  5. int main(int argc,char *argv[])    
  6. {    
  7.     Mat image=imread(argv[1],0);  
  8.     Mat imageDst=~image; //图像反转  
  9.     imshow("Source Image",image);  
  10.     imshow("Reversal Image",imageDst);    
  11.     waitKey();  
  12.     return 0;    
  13. }  


Opencv重载了“~”操作符,~image就可以返回image的反转图像。下图可以看到,黑的部分变白,白的部分变黑了。

    


对数变换


对数变换可以将图像的低灰度值部分扩展,显示出低灰度部分更多的细节,将其高灰度值部分压缩,减少高灰度值部分的细节,从而达到强调图像低灰度部分的目的。变换方法:



对数变换对图像低灰度部分细节增强的功能过可以从对数图上直观理解:



x轴的0.4大约对应了y轴的0.8,即原图上0~0.4的低灰度部分经过对数运算后扩展到0~0.8的部分,而整个0.4~1的高灰度部分被投影到只有0.8~1的区间,这样就达到了扩展和增强低灰度部分,压缩高灰度部分的值的功能。

从上图还可以看到,对于不同的底数,底数越大,对低灰度部分的扩展就越强,对高灰度部分的压缩也就越强。


Opencv实现:

[cpp]  view plain  copy
 print ?
  1. #include <opencv2/highgui/highgui.hpp>    
  2. #include <opencv2/imgproc/imgproc.hpp>    
  3. #include <opencv2/core/core.hpp>   
  4.   
  5. using namespace cv;   
  6.   
  7. int main(int argc,char *argv[])    
  8. {    
  9.     Mat image=imread(argv[1]);  
  10.     Mat imageLog(image.size(),CV_32FC3);  
  11.     for(int i=0;i<image.rows;i++)  
  12.     {  
  13.         for(int j=0;j<image.cols;j++)  
  14.         {  
  15.             imageLog.at<Vec3f>(i,j)[0]=log(1+image.at<Vec3b>(i,j)[0]);  
  16.             imageLog.at<Vec3f>(i,j)[1]=log(1+image.at<Vec3b>(i,j)[1]);  
  17.             imageLog.at<Vec3f>(i,j)[2]=log(1+image.at<Vec3b>(i,j)[2]);            
  18.         }  
  19.     }  
  20.     //归一化到0~255  
  21.     normalize(imageLog,imageLog,0,255,CV_MINMAX);  
  22.     //转换成8bit图像显示  
  23.     convertScaleAbs(imageLog,imageLog);  
  24.     imshow("Soure",image);  
  25.     imshow("after",imageLog);  
  26.     waitKey();  
  27.     return 0;    
  28. }    

低灰度部分扩展效果:

     


从右图可以看到,低灰度部分如楼房、天空、树叶部分的像素值得到了扩展,可以看到更多的细节。所以对数变换对照度不均图像中低灰度部分的细节增强很实用。


伽马变换


伽马变换主要用于图像的校正,将灰度过高或者灰度过低的图片进行修正,增强对比度。变换公式就是对原图像上每一个像素值做乘积运算:



伽马变换对图像的修正作用其实就是通过增强低灰度或高灰度的细节实现的,从伽马曲线可以直观理解:



γ值以1为分界,值越小,对图像低灰度部分的扩展作用就越强,值越大,对图像高灰度部分的扩展作用就越强,通过不同的γ值,就可以达到增强低灰度或高灰度部分细节的作用。


Opencv实现:

[cpp]  view plain  copy
 print ?
  1. #include <opencv2/highgui/highgui.hpp>    
  2. #include <opencv2/imgproc/imgproc.hpp>    
  3. #include <opencv2/core/core.hpp>   
  4.   
  5. using namespace cv;   
  6.   
  7. int main(int argc,char *argv[])    
  8. {    
  9.     Mat image=imread(argv[1]);  
  10.     Mat imageGamma(image.size(),CV_32FC3);  
  11.     for(int i=0;i<image.rows;i++)  
  12.     {  
  13.         for(int j=0;j<image.cols;j++)  
  14.         {  
  15.             imageGamma.at<Vec3f>(i,j)[0]=(image.at<Vec3b>(i,j)[0])*(image.at<Vec3b>(i,j)[0])*(image.at<Vec3b>(i,j)[0]);  
  16.             imageGamma.at<Vec3f>(i,j)[1]=(image.at<Vec3b>(i,j)[1])*(image.at<Vec3b>(i,j)[1])*(image.at<Vec3b>(i,j)[1]);  
  17.             imageGamma.at<Vec3f>(i,j)[2]=(image.at<Vec3b>(i,j)[2])*(image.at<Vec3b>(i,j)[2])*(image.at<Vec3b>(i,j)[2]);               
  18.         }  
  19.     }  
  20.     //归一化到0~255  
  21.     normalize(imageGamma,imageGamma,0,255,CV_MINMAX);  
  22.     //转换成8bit图像显示  
  23.     convertScaleAbs(imageGamma,imageGamma);  
  24.     imshow("Soure",image);  
  25.     imshow("Gamma Trans",imageGamma);  
  26.     waitKey();  
  27.     return 0;    
  28. }    


原图是一张有点过曝的图像,高灰度部分的细节不清楚,通过伽马变换扩展高灰度部分,增强对比度:



伽马变换效果:



顶
3
踩
fpga实现图像灰度变换、sobel边缘检测算法 fpga实现图像灰度变换、sobel边缘检测算法 针对这学期学习fpga开发,主要做了图像采集、预处理和显示部分,本次实验采用spartan6板子,通过ov5640将采集到的图像数据发送给片上SDRAM,生成行列地址存入ram中并读取给lcd显示,图像预处理部分主要针对边缘检测sobel算子、灰度变换和膨胀腐蚀算法,不过板子的不同除了接口处略有不同外,功能实现大致略同,可在任何一个板子上进行测试,在实验过程中出现了一些问题比如: 1、根据算法原理中3*3矩阵卷积部分进行实现的过程中调用了vivado的shi 阅读详情

相关推荐

matlab 用imadjust函数实现图像灰度变换

imadjust函数的用法MATLAB 中imadjust函数可以对图像进行灰度变换,用于调节图像的灰度值范围。 * 题目 * 用MATLAB 内置函数imadjust实现上一篇博客自定义函数的功能,并把自定义函数和imadjust函数处理后的图片并列显示。

Mandy酱的学习日记 4973

图像的灰度变换

一、图像的灰度变换 图像的灰度变换就是按照一定的变换关系,逐点改变原图像中每一个像素灰度值的方法。是图像增强技术处理技术中一个非常基础、直接的空间域图像处理的方法。目的就是改善画质。灰度变换有线性变换、非线性变换、分段线性变换 线性变换 变换公式如下 g(x,y)=T[f(x,y)]=a∗f(x,y)+b g(x,y)=T[f(x,y)]=a*f(x,y)+b g(x,y)=T[f(x,y)]=a...

qq_43409114的博客 4230

图像处理基础:灰度图像转换

其中,灰度图像转换是一种常见的图像处理操作,它将彩色图像转换为灰度图像,使得图像只包含亮度信息而不包含颜色信息。通过使用Python编程语言和OpenCV库,我们可以轻松实现灰度图像转换的功能,并在图像处理中应用这一技术。灰度图像转换的原理是将彩色图像的RGB(红绿蓝)通道值转换为灰度值,通过降低颜色信息的维度来达到转换的目的。需要注意的是,上述代码的实现基于OpenCV库,因此在运行代码之前需要安装OpenCV库,并且将要转换的彩色图像文件命名为。函数显示原始彩色图像和转换后的灰度图像,并通过。

QvisCs的博客 359

蓝桥杯嵌入式国赛实战:STM32G4架构设计与核心模块实现

嵌入式系统开发是连接软件与物理世界的核心技术,其核心在于通过微控制器(如STM32系列)对外设进行精准控制与实时数据处理。其工作原理基于硬件抽象层(HAL)与模块化设计,将复杂的硬件操作封装为统一的API,从而实现高内聚、低耦合的软件架构。这项技术的价值在于能够高效、可靠地构建智能设备,是物联网、工业自动化等领域的基石。在应用场景上,它广泛用于需要实时响应和多任务调度的场合,例如智能家居控制、机器人运动控制以及数据采集系统。本文以蓝桥杯嵌入式竞赛项目为具体案例,深入剖析了基于STM32G431RBT6的**

weixin_34290631的博客 563

基于灰度变换的图像增强及MATLAB实现

灰度变换是一种常用的图像增强方法,它通过调整图像的像素灰度级别来改善图像的对比度和亮度。本文将介绍基于灰度变换的图像增强方法,并提供MATLAB实现的源代码。本文介绍了基于灰度变换的图像增强方法,并提供了MATLAB实现的源代码。通过调整不同的灰度变换函数和参数,可以实现对图像的对比度、亮度和动态范围的调整。这些方法可以根据具体的需求选择和组合使用,以达到所需的图像增强效果。线性变换是最简单的灰度变换方法之一,它通过将输入图像的像素值按比例映射到输出图像的像素值。的值,可以实现对图像对比度和亮度的调整。

HackMasterX的博客 570

lena等37张经典灰度图

我自己收集的37张经典灰度图,包括lena等,均为256*256,做图像处理的同学必不可少。

实验一:图像灰度变换 C++实现

一.实验内容 1、利用 OpenCV 读取图像。 具体内容:用打开 OpenCV 打开图像,并在窗口中显示 2、灰度图像二值化处理 具体内容:设置并调整阈值对图像进行二值化处理。 3、灰度图像的对数变换 具体内容:设置并调整 r 值对图像进行对数变换。 4、灰度图像的伽马变换 具体内容:设置并调整γ值对图像进行伽马变换。 5、彩色图像的补色变换 具体内容:对彩色图像进行补色变换。 实验过程 1.利用 OpenCV 读取图像 #include "main.hpp" #include <opencv2/o

chuxuezheerer的博客 7366

OpenSSL玩转证书链:从Windows CA根证书到签发多域名/IP的服务器证书全攻略

本文详细介绍了如何使用OpenSSL在Windows环境下构建私有CA体系,从创建CA根证书到签发支持多域名/IP的服务器证书的全流程。通过实战指南,读者可以掌握零成本证书管理技术,灵活配置SAN扩展,并了解在Nginx、Apache等主流服务器中的证书部署方法,适用于企业内网、IoT设备等HTTPS加密场景。

weixin_28731223的博客 440

11、OpenCV实现图像的灰度变换

1、灰度变换的基本概念   灰度变换指对图像的单个像素进行操作,主要以对比度和阈值处理为目的。其变换形式如下:   s=T(r) 其中,T是灰度变换函数;r是变换前的灰度;s是变换后的像素。图像灰度变换的有以下作用: 改善图像的质量,使图像能够显示更多的细节,提高图像的对比度(对比度拉伸) 有选择的突出图像感兴趣的特征或者抑制图像中不需要的特征 可以有效的改变图像的直方图分...

weixin_34268843的博客 1528

黑群晖二合一已损毁_手动修复黑群晖已损毁磁盘空间

lz的用法是这样的,一个中古级mac mini 2011上装有vmware esxi 7.6, 然后上面挂载了lz的华芸Asustor Nas的iscsi空间,lz用的是basic volume,然后esxi上面有虚拟的黑群晖6.2.2-24922,黑群晖的docker里跑着不可描述软件,但是发现下载速度过快时,比如有好几个文件同时下载,总速度超过60MB/s以后storage manager里很...

weixin_39669629的博客 1万+

开源大模型“去审查化”技术解析:从LLaMA架构到本地部署与伦理边界

大型语言模型(LLM)基于Transformer架构,通过海量数据训练获得理解和生成自然语言的能力。其核心原理在于自注意力机制对上下文关系的建模。为了确保输出内容的安全与合规,主流模型普遍采用基于人类反馈的强化学习(RLHF)等技术进行安全对齐。这一过程旨在使模型行为符合人类价值观,是AI伦理工程实践的关键环节。然而,在特定研究场景下,如对抗性测试或内容安全算法研究,技术人员需要模拟极端对话以评估系统鲁棒性,这催生了针对“去对齐”或“移除护栏”的技术探索。此类技术通常通过对预训练模型进行反向微调或继续训练来

weixin_33743880的博客 591

Matlab数字图像处理 实验2、图像灰度变换的计算机实现

在Windows操作系统下的MATLAB2019b应用程序中编写程序,待程序调试完成后,通过选取相同尺寸、不同质量的三幅图像分别利用变换函数(线性函数、对数函数)和直方图均衡化方法进行灰度变换来探究基于灰度变换的图像增强效果及其相应的直方图变换情况。

Stay hungry. Stay foolish. 3177

MATLAB/Simulink BLDC电机控制模型搭建:六步换相与速度环实战

无刷直流电机(BLDC)控制是电机驱动领域的核心技术,其六步换相原理通过霍尔信号控制逆变器开关,使定子磁场与转子磁场保持垂直以产生最大转矩。在MATLAB/Simulink中搭建BLDC控制系统,需从电机本体建模入手,结合PWM占空比调节和速度环PI控制器,实现速度闭环与波形观测。该技术广泛应用于电动工具、无人机电调和伺服驱动器等场景。本文详细解析BLDC六步换相逻辑、反电动势建模及Simulink分层设计方法,帮助读者掌握从零搭建完整控制模型的工程实践。

weixin_28273593的博客 210

C++实现图像灰度变换(附带源码)

C++实现图像灰度变换(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 957

gnss变形监测基础(四)

监测站的数据采样率指的是监测站在单位时间内收集数据的频率,通常以赫兹(Hz)为单位。在GNSS变形监测中,数据采样率决定了监测系统能够捕捉到的变形动态变化的详细程度和时间分辨率。例如,一个采样率为1Hz的GNSS监测站意味着它每秒钟收集一次位置数据;而一个采样率为10Hz的监测站则每秒钟收集10次位置数据。较高的采样率能够提供更细致的时间序列数据,有助于分析快速变化的动态过程,如地震活动或建筑物的振动响应。然而,较高的采样率也意味着数据量更大,可能需要更多的存储空间和更强大的数据处理能力。

我的博客 1293

8.DJI-PSDK:一站式项目功能开发总结(空中气象站项目/激光甲烷检测项目)

本文将以一篇文章的幅度快速完成: 项目一:空中气象站项目; 项目二:激光甲烷项目; 项目所使用的PSDK来源于第0章节末尾的百度网盘;解压:Payload-SDK-3.8.zip代码所在目录:双击打开: 修改打印串口和相关波特率,我们修改如下: 进行相关编译选项配置如下: :

哒宰的博客 294

数字图像处理:图像的灰度变换(Matlab实现)

数字图像处理:图像的灰度变换(Matlab实现) (1)线性变换:通过建立灰度映射来调整源图像的灰度。 k>1增强图像的对比度;k=1调节图像亮度,通过改变d值达到调节亮度目的;0 i = imread('theatre.jpg');i = im2double(rgb2gray(i));[m,n]=size(i);%增加对比度Fa = 1...

极歌科技 9381

还在纠结二层交换机和三层交换机的区别?这篇文章帮你讲明白!

你好,这里是网络技术联盟站,我是瑞哥。公众号后台有小伙伴想要写一篇文章具体介绍一下二层交换机和三层交换机,此类的文章,之前写过几篇,今天瑞哥再写一篇,希望对大家有所帮助!

网络技术联盟站 4442

实验二 图像直方图及灰度变换(Python实现)

数字图像处理 实验二 图像直方图及灰度变换(Python实现)

ReadyGo!!!的博客 8713

【深度学习新浪潮】智能体在图像处理领域的技术突破与实践指南

智能体正在重构图像处理的技术版图:从多智能体分工的"专业化协作",到多模态统一的"极简架构",再到工具增强的"实战能力",技术突破不断降低开发门槛并拓展应用边界。对于开发者而言,2025年的核心机遇在于结合具体场景选择成熟框架(如医疗用IteR-MRL、工业用NVIDIA NIM),通过微调与工具集成快速落地解决方案。随着硬件成本下降与开源生态完善,图像处理智能体将从当前的"高端场景赋能"走向"千行百业普及",真正成为数字世界的"视觉感知与操作核心"。

专注:太空算力、AI infra、异构调度、大模型成本工程 439

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

图像增强:灰度变换(Python实现)

图像增强能够有目的地强调图像地整体或是局部特征,将不清晰地图像变得更为清晰,或是强调某些感兴趣的特征,使其改善图像质量,加强图像判别和识别的效果。现有的图像增强的方法非常多,今天我们主要...

老肥码码码 8371

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

利用 Python3 实现图像灰度变换及数组操作

使用python以及numpy通过直接操作图像数组完成一系列基本的图像处理 numpy简介: NumPy是一个非常有名的 Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量、矩阵、图像等)以及线性代数函数。 数组对象可以实现数组中重要的操作,比如矩阵乘积、转置、解方程系统、向量乘积和归一化。这为图像变形、对变化进行建模、图像分类、图像聚类等提供了基础。 在上...

SpringRolls的博客 1857

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: 学习笔记(二)——直方图均衡化和匹配
下一篇: 如何理解K-L散度(相对熵)
GoodShot
博客等级 码龄22年 968粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值