对比度拉伸(一些基本的灰度变换函数)基本原理及Python实现

1. 基本原理

对比度拉伸是扩展图像灰度级动态范围的处理。通过在灰度级中确定两个点来控制变换函数的形状。下面是对比度拉伸函数中阈值处理的代码示例,阈值为平均值。

2. 测试结果

图源自skimage

3. 代码

 1 def contrast_stretch(input_image):
 2     ‘‘‘
 3     对比度拉伸(此实现为阈值处理,阈值为均值)
 4     :param input_image: 输入图像
 5     :return: 对比图拉伸后的图像
 6     ‘‘‘
 7     input_image_cp = np.copy(input_image) # 输入图像的副本
 8
 9     pixels_value_mean = np.mean(input_image_cp) # 输入图像的平均灰度值
10
11     # 对比图拉伸(注:该实现顺序不能颠倒)
12     input_image_cp[np.where(input_image_cp <= pixels_value_mean)] = 0
13     input_image_cp[np.where(input_image_cp > pixels_value_mean)] = 1
14
15     output_image = input_image_cp
16
17     return output_image

原文地址:https://www.cnblogs.com/iwuqing/p/11297259.html

时间: 2024-11-12 08:58:25

对比度拉伸(一些基本的灰度变换函数)基本原理及Python实现的相关文章

OpenCV2马拉松第9圈——再谈对比度(对比度拉伸,直方图均衡化)

收入囊中 lookup table 对比度拉伸 直方图均衡化 葵花宝典 lookup table是什么东西呢? 举个例子,假设你想把图像颠倒一下,f[i] = 255-f[i],你会怎么做? for( int i = 0; i < I.rows; ++i) for( int j = 0; j < I.cols; ++j ) I.at<uchar>(i,j) = 255 - I.at<uchar>(i,j); 大部分人应该都会这么做.或者: for( i = 0; i &

伽马变换(一些基本的灰度变换函数)基本原理及Python实现

1. 基本原理 变换形式 $$s=cr^{\gamma}$$ c与$\gamma$均为常数 可通过调整$\gamma$来调整该变换,最常用于伽马校正与对比度增强 2. 测试结果 图源自skimage 3. 代码 1 def gamma_transformation(input_image, c, gamma): 2 ''' 3 伽马变换 4 :param input_image: 原图像 5 :param c: 伽马变换超参数 6 :param gamma: 伽马值 7 :return: 伽马变

对数变换(一些基本的灰度变换函数)基本原理及Python实现

1. 基本原理 变换形式如下 $$T(r) = c\lg(r+1)$$ c为常数 由于对数函数的导数随自变量的增大而减小,对数变换将输入窄范围的低灰度值扩展为范围宽的灰度值和宽范围的高灰度值压缩为映射为范围窄灰度值.从视觉上,通常是图片变得更亮了 2. 测试结果 对数变换,参数C=1(图源自skimage) 3. 代码 1 def logarithmic_transformation(input_image, c): 2 ''' 3 对数变换 4 :param input_image: 原图像

中值滤波器(平滑空间滤波器)基本原理及Python实现

1. 基本原理 一种典型的非线性滤波器就是中值滤波器,它使用像素的一个领域内的灰度的中值来代替该像素的值.中值滤波器通常是处理椒盐噪声的一种有效的手段. 2. 测试结果 图源自skimage 3. 代码 1 import numpy as np 2 3 def median_filter(input_image, filter_size): 4 ''' 5 中值滤波器 6 :param input_image: 输入图像 7 :param filter_size: 滤波器大小 8 :return

均值滤波器(平滑空间滤波器)基本原理及Python实现

1. 基本原理 使用元素的领域内像素的平均值代替该元素,可明显的降低图像灰度的尖锐变换.它的一种重要应用是模糊处理:得到感兴趣的区域的粗略表示,将次要的/小的元素与背景融合,使得主要的/较大的元素变得易于检测 $$ R=\frac{1}{m} \sum_{i=1}^{m} z_{i} $$ $m$为滤波器大小 2. 测试结果 图源自skimage 3. 代码 1 import numpy as np 2 3 4 def means_filter(input_image, filter_size)

使用二阶微分锐化图像(拉普拉斯算子)基本原理及Python实现

1. 拉普拉斯算子 1.1 简介 一种典型的各向同性的微分算子,可用于检测图像中灰度图片的区域 $$ \nabla^{2} f=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} $$ 根据上述的差分近似可以推导出 $$ \nabla^{2} f(x, y)=f(x+1, y)+f(x-1, y)+f(x, y+1)+f(x, y-1)-4 f(x, y) $$ 1.2 锐化过程 使用拉普拉斯过滤

数字图像处理学习笔记之二 灰度变换与空间滤波

综述 对于图像的处理有两种思路,一种是对图像本身的直接处理,即空间域处理:另一种是在频率域进行处理.关于空域和频域,可以参考<傅里叶变换--另一种世界观>.在空间域的处理相对简单,因此首先介绍的是空域处理法.空域中有两种重要处理方法:灰度变换(或亮度变换)和空间滤波(或邻域处理.空间卷积). 空间域处理:灰度变换和空间滤波 g(x,y)=T[ f(x,y) ] 空域处理的思路可以由上式表达.f 即是原图,T 是在点(x,y)指定邻域上的图像处理算子,g 是输出图像.当邻域为1*1大小时,T 为

【数字图像处理】灰度直方图、直方图均衡化、直方图规定化

灰度直方图 一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征.图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少.图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率. 灰度直方图的计算公式如下: p(rk)=nk/MN 其中,rkrk是像素的灰度级,nknk是具有灰度rkrk的像素的个数,MNMN是图像中总的像素个数. 直方图均衡化 Histogram Equal

【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理具体解释

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行解说.主要通过MFC单文档视图实现显示BMP图片点运算处理.包含图像灰度线性变换.灰度非线性变换.图像阈值化处理.图像均衡化处理等知识,并结合前一篇论文灰度直方图进行展示 .同一时候文章比較具体基础,希望该篇文章对你有所帮助,尤其是刚開始学习的人和学习图像处理的学生. [数字图像处理]一.MFC具体解释显示BMP格式图片 [数字图像处理]二.MFC单文档切割窗体显示图片 [数字图像处理]