IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 数字图像处理第三章-----灰度变换和空间域滤波 -> 正文阅读

[人工智能]数字图像处理第三章-----灰度变换和空间域滤波

目录

一:灰度变换与空间滤波

二.灰度变换

2.1 图像反转

?2.2 对数变换

2.3 幂律变换(伽马变换)


一:灰度变换与空间滤波

图像处理中分为空间域的变换和频率域的变换,

空间域:

? ? ? 指的时图像的平面本身,这类方法是对图像中的像素直接操作。其在计算上相比于频率域变换更有效,且执行所需的处理资源较少。

频率域:

????????图像频率域的理解

空间域处理可由下式定义:

g(x, y) = T[f(x, y)]

其中,f(x,y)时输入图像,g(x,y)是处理后的图像,T是在点(x,y)领域上定义的关于f的一种操作(算子)。邻域通常是中心在(x,y)的矩形,有时也采用其他形状,如圆的数字近似,但矩形邻域是到目前为止最好的邻域,因为它在计算机上实现起来更容易。?当领域的大小不是1*1时,利用滑动的窗口在图像空间中做空间域的操作,当前的像素点由周围像素点决定,这种操作的过程叫做空间滤波。但是最小领域的大小为1*1,在这种情况下,g(x, y)仅仅取决于点(x, y)处的值f,这个时候空间域的处理公式变为(灰度级变换函数或者映射函数):

s=T(r)

其中sr为所定义的变量,分别是gf在任意点(x, y)的灰度值
空间域的处理分为:灰度变换和空间滤波

二.灰度变换

2.1 图像反转

? ? ? ? 图像反转可以得到灰度级范围为【0,L-1】的图像的反转图像,该反转图像由下式给出:

s=L-1-r

????????其中s是反转后图像的像素值,L是反转图像的灰度级。使用这种方式反转一幅图像的灰度级,可以等效的得到照片的底片。适用于增强嵌入图像暗色区域的白色或灰色细节,特别是当黑色面积在尺寸上占主导地位时。

?PYthon代码实现:

from PIL import Image
import numpy as np

def img_inversion(img_path):
    image = Image.open(img_path)
    image.show()
    img = np.array(image)
    imgs = 256-img-1
    img=Image.fromarray(np.uint8(imgs))
    img.show()

if __name__ == '__main__':
    img_path=r'1.jpg'
    img_inversion(img_path=img_path)

?实现后的效果如下:

上图左边为原图,右边为图像反转后的图像,可以看出反转后黑色区域变亮了,亮的区域变暗了。

?2.2 对数变换

????????对数变换主要用于将图像的低灰度值部分扩展,将其高灰度值部分压缩,以达到强调图像低灰度部分的目的。变换方法由下式给出:

s=clog(1+r)

?其中c为常数,并且假设r\geqslant 0r加1可以使函数向左移一个单位,得到的s均大于0。注意:因为L的取值范围常为0~255,所以r的取值范围为也是0~255,那么log(1+r)的取值范围为0~2.40824,如果c的取值非常小,那么对数变换后图像的像素值的取值范围为:0~2.40824c,也是非常小的,这样会产生一张全黑的图,人眼不能分辨。可以看出c相当于一个缩放的尺度。

????????由上图可以看到采用对数变换时,对于输入图像,灰度值在[0,L/4](其中L是图像的灰度级)范围类变换到[0,3L/4],可以看出图像低灰度值的部分进行了扩展,而高灰度值的部分被压缩了。即(灰度值范围一般从0到255,白色为255,黑色为0)当灰度值在0~64范围会被扩展,也就是当c取得比较大的时候,黑色区域会变小,一部分像素值接近于64区域会变亮。反对数函数的作用于此相反,反对数变换是把图像低灰度值的部分进行压缩,高灰度值的部分进行扩展。

python实现:

def img_log_transformation(img_path):
    img = Image.open(img_path)
    
    # 此处把PIL图像转换为numpy,这样方便做对数变换
    img = np.array(img)
    c=45
    img = c * np.log(1.0 + img)

    img = Image.fromarray(np.uint8(img))
    img.save('6.png')

if __name__ == '__main__':
    img_path=r'1.jpg'
    # img_inversion(img_path=img_path)
    img_log_transformation(img_path)

?实现后的效果:

上图左边为原图,右边为对数变换后的图像,c=45,从右边可以看到,在接近岸边和船旁边的原本黑色区域变亮了,这是因为图像低灰度值的部分进行了扩展,被映射到高范围的区域了。但是船本身的细节也模糊了,这是因为船本身的像素值是比较高的,通过对数变换之后,像素值被压缩了

注意:对数变换将源图像中范围较窄的低灰度值映射到范围较宽的灰度区间,同时将范围较宽的高灰度值区间映射为较窄的灰度区间,从而扩展了暗像素的值,压缩了高灰度的值,能够对图像中低灰度细节进行增强

2.3 幂律变换(伽马变换)

?幂次变换的基本形式为:

s=cr^\gamma

其中c\gamma为常数,当c=\gamma =1时,就是恒等变换,恒等变换就是输入像素值等于输出像素值。

?由上图可以看出,当\gamma>1时,低灰度区域被压缩,高灰度区域被扩展,?处理漂白的图片,进行灰度级压缩。当\gamma<1时, 低灰度区域被扩展,高灰度区域被压缩,(灰度值范围一般从0到255,白色为255,黑色为0)处理过黑的图片,对比度增强,使得细节看的更加清楚。

注意八位的像素值最大为255,当像素值过大,\gamma>1产生的像素值可能超过范围,故可能发生溢出,产生截断,这个时候c的取值起到了一个调控作用。

python实现:

def img_gamma_transform(img_path):
    img = Image.open(img_path)

    # 此处把PIL图像转换为numpy,这样方便做对数变换
    img = np.array(img)
    c = 45
    img = c * np.power(img,2)

    img = Image.fromarray(np.uint8(img))
    img.save('gamma_transform.png')

if __name__ == '__main__':
    img_path=r'4.jpg'
    # img_inversion(img_path=img_path)
    # img_log_transformation(img_path)
    img_gamma_transform(img_path)

?可视化的效果:

\gamma >1c=1时。

原图\gamma =1.1\gamma =2

????????从上图可以看出,\gamma >1时,像素值比较大的时候,如果\gamma的取值比较大,那么经过r^\gamma变换后,像素值会超过255,细节就不存在了。

\gamma <1,c=1时

原图\gamma =0.8\gamma =0.5

? ? ? ? ?从上图可以看出,\gamma <1,像素值最大值为255,\gamma越小,像素值经过r^\gamma变换后越小,图像越模糊。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:02:58  更:2022-04-01 00:03:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:52:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码