iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python灰度变换中的分段线性函数专项分析实现
  • 503
分享到

Python灰度变换中的分段线性函数专项分析实现

2024-04-02 19:04:59 503人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 分段线性函数介绍2. 代码实现3. other1. 分段线性函数介绍 分段线性函数同样是点运算,基于像素的图像增强,也就是对比度拉伸。 大概的原理就是:将不同灰度区间的灰度

1. 分段线性函数介绍

分段线性函数同样是点运算,基于像素的图像增强,也就是对比度拉伸。

大概的原理就是:将不同灰度区间的灰度值经过不同的映射函数映射到另一个灰度区间的过程。

因为使用变换函数的个数是三个,所以我们经常使用的分段线性函数是三段线性变换函数

对应的数学公式为

  • a = 1 ,b = 0 时,恒等函数,不改变图像的灰度值
  • a >1, 对比度增强
  • 0 < a < 1 , 对比度减弱
  • b 控制图像的亮度,b > 0 图像变亮,b < 0 图像变弱

对比度:定义为图像中最高和最低灰度级之间的灰度差

但没有真正意义上的计算公式,只是大概意思的表示

如果一副图像灰度的动态范围具有高的动态范围,那我们就认为这幅图像的对比度高

2. 代码实现

import numpy as np
import cv2
def linear_transfORM(img):
    height,width = img.shape[:2]
    r1,s1 = 80,10
    r2,s2 = 140,200
    k1 = s1 / r1   # 第一段斜率
    k2 = (s2 - s1) / (r2 - r1) # 第二段斜率
    k3 = (255 - s2) / (255 - r2)  # 第三段斜率
    img_copy = np.zeros_like(img)
    for i in range(height):
        for j in range(width):
            if img[i,j] < r1 :
                img_copy[i,j] = k1 * img[i,j]
            elif r1 <= img[i,j] <= r2:
                img_copy[i,j] = k2 * (img[i,j] - r1) + s1
            else:
                img_copy[i,j] = k3 * (img[i,j] - r2) + s2
    return img_copy
img = cv2.imread('./img.png',0)
ret = linear_transform(img)
cv2.imshow('img',np.hstack((img,ret)))
cv2.waiTKEy()
cv2.destroyAllwindows()

处理结果为

这里代码的实现较为简单,不再赘述,单纯的取图像的像素点然后进行映射而已。

3. other

说说中间两个分段点怎么取值的问题

因为通过观察原图发现,图像整体灰度值偏低,所以我们将原图(0-80)的灰度值压缩到(0-10)范围内,再将中间的(80-140) 灰度值放大,就可以将中间的对比度拉大

书上的分段点取得是(r1,s1) = (r.min , 0) , (r2,s2) = (r.max , 255)

只需要将上面的代码改成这样,就可以得到下面的图片

但是这种方法可能不是很泛化,因为观察这幅图片的直方图可以发现,原图片的低灰度值和高灰度值都是没有的。而往往大多数的图片动态范围都是(0,255)。如果按照书上的进行,就会变成

(r1,s1) = (0, 0) , (r2,s2) = (255 , 255),就变成y = x的恒等变换了

最后,因为观察直方图,可以知道,在80-90 左右 的左侧像素值均为背景信息,我们可以进行压缩对比度。而在 90-130 中间灰度占比多,为前景信息,我们可以进行对比度拉伸

上面的分段点就是观察直方图得出来得值

  • 所以分段线性函数的分段点可以通过直方图简单得到
  • 分段线性变换可以不是连续的

到此这篇关于python灰度变换中的分段线性函数专项分析实现的文章就介绍到这了,更多相关Python分段线性函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python灰度变换中的分段线性函数专项分析实现

本文链接: https://www.lsjlt.com/news/120801.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python灰度变换中的分段线性函数专项分析实现
    目录1. 分段线性函数介绍2. 代码实现3. other1. 分段线性函数介绍 分段线性函数同样是点运算,基于像素的图像增强,也就是对比度拉伸。 大概的原理就是:将不同灰度区间的灰度...
    99+
    2024-04-02
  • Python灰度变换中的对数变换专项分析实现
    目录1. 原理2. 代码1. 原理 对数变换的公式为: 其中:c是伸缩系数,常设为1。src为输入的原图像,dst为经过对数变换的输出图像 对数变换的曲线为: 由曲线的形状可以发...
    99+
    2024-04-02
  • Python灰度变换中灰度切割分析实现
    目录1. 介绍2. 灰度切割代码实现3. 阈值处理1. 介绍 灰度切割:增强特定范围的对比度,突出图像中特定范围的亮度(灰度级分层也叫灰度切割) 实现灰度切割的方法有很多种,但基本的...
    99+
    2024-04-02
  • Python灰度变换中伽马变换分析实现
    目录1. 介绍2. 代码实现3. 提升视频的亮度1. 介绍 伽马变换主要目的是对比度拉伸,将图像灰度较低的部分进行修正 伽马变换针对的是对单个像素点的变换,也就是点对点的映射 形式为...
    99+
    2024-04-02
  • Python中图像灰度非线性变换的示例分析
    这篇文章将为大家详细讲解有关Python中图像灰度非线性变换的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一.图像灰度非线性变换原始图像的灰度值按照DB=DA&times;DA/255的...
    99+
    2023-06-29
  • Python灰度变换中位图切割分析实现
    目录1. 介绍2. 实现方法3. code4. 比特平面重建图像1. 介绍 图像的像素值是由比特组成的。例如一副256级灰度图像中,图像是由8 bit组成。 与之前对比度拉伸的区别是...
    99+
    2024-04-02
  • Python绘制分段函数的实现示例
    本文主要介绍了Python绘制分段函数,具体如下: 如上图所示的分段函数如何在Python中绘制出来? import matplotlib.pyplot as plt import...
    99+
    2023-05-14
    Python绘制分段函数 Python分段函数绘制
  • CTF中的PHP特性函数实例分析
    这篇文章主要介绍“CTF中的PHP特性函数实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CTF中的PHP特性函数实例分析”文章能帮助大家解决问题。MD5强弱碰撞对于MD5加密大家一定很熟悉,...
    99+
    2023-07-05
  • python中threading实现线程的示例分析
    小编给大家分享一下python中threading实现线程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!过程说明从Thread类构成子类。覆盖方法根据需...
    99+
    2023-06-20
  • Python中函数的参数类型实例分析
    今天小编给大家分享一下Python中函数的参数类型实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、Python的函...
    99+
    2023-07-02
  • Python中Sweetviz如何实现探索性数据分析
    小编给大家分享一下Python中Sweetviz如何实现探索性数据分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Sweetviz 是一个开源 Python 库,它只需三行代码就可以生成漂亮的高精度可视化效果来启动EDA...
    99+
    2023-06-25
  • Python中的变量和数据类型实例分析
    本篇内容介绍了“Python中的变量和数据类型实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python是一门弱数据类型的语言,变量...
    99+
    2023-06-29
  • Python 中的装饰器实现函数的缓存(场景分析)
    装饰器模式在以下场景中被广泛应用: 动态地向对象添加职责或行为,而不需要更改对象的代码。例如,可以通过装饰器模式来实现日志记录、性能分析、缓存等功能,而不会影响原始对象的行为。对已有...
    99+
    2023-02-28
    Python装饰器实现函数缓存 Python装饰器实现缓存 Python装饰器
  • 怎么在Python中使用pandas函数实现数据分析
    本篇文章给大家分享的是有关怎么在Python中使用pandas函数实现数据分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python有哪些常用库python常用的库:1.r...
    99+
    2023-06-14
  • MySQL数据库中CAST与CONVERT函数实现类型转换的示例分析
    这篇文章主要为大家展示了“MySQL数据库中CAST与CONVERT函数实现类型转换的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL数据库中C...
    99+
    2024-04-02
  • Python函数中的作用域规则实例分析
    这篇文章主要介绍了Python函数中的作用域规则实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python函数中的作用域规则实例分析文章都会有所收获,下面我们一起来看看吧。Python是静态作用域语言,...
    99+
    2023-06-29
  • python中randint函数的效率缺陷实例分析
    本篇内容介绍了“python中randint函数的效率缺陷实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、前言前几天,在写一个与差...
    99+
    2023-07-02
  • MySQL自定义变量实现row_number分析函数的问题示例
    小编给大家分享一下MySQL自定义变量实现row_number分析函数的问题示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL经常用自定义变量实现复杂查询,比如row_numbe...
    99+
    2024-04-02
  • 深入分析与实例:Python中的lambda函数应用
    Python中lambda函数的实例应用与案例分析 Python是一门多范式的编程语言,支持函数式编程。在函数式编程中,lambda函数是一种非常有用的工具。它是一种匿名函数,可以在需要函数的地方使用,并且可以快速定义简单的功能...
    99+
    2024-02-03
    案例分析 lambda函数 实例应用
  • NumPy中的线性关系与数据修剪压缩实例分析
    这篇文章主要介绍“NumPy中的线性关系与数据修剪压缩实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“NumPy中的线性关系与数据修剪压缩实例分析”文章能帮助大家解决问题。摘要总结股票均线计算...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作