目录

一、灰度变换函数

对数变换

加码变换

常见雷点

常见灰度变换函数

两个函数cv2.normalize,cv2.convertScaleAbs(new_img)


一、灰度变换函数

Python图像处理(一)【灰度化、二值化、灰度变换】

Python实现对数变换、幂律变换

对数变换

加码变换

常见雷点

注意:上述的变换是先将原始的像素值进行对数或者幂律变换,然后得到相应变换后的矩阵,为了使得能够正常的显示,还需要将矩阵元素值的范围限制在0-255之间,以及将其转换为8位图(uint8

代码如下:

cv2.normalize(new_img,new_img,0,255,cv2.NORM_MINMAX)
new_img = cv2.convertScaleAbs(new_img)

也可以使用以下的方法来创建函数,常用的是幂律变换,因为可以直接先对变换前的像素值进行归一到0-1的操作,然后再进行乘以255的操作

常见灰度变换函数

两个函数cv2.normalize,cv2.convertScaleAbs(new_img)

cv2.normalize上面的对数变换代码相当于先把灰度范围[0,255]变换到[0,5.554]在使用cv2.normalize()按比例还原到[0,255]

cv2.convertScaleAbs()函数 (通过线性变换将数据转换成8位[uint8])

import cv2
import math
import numpy as np#对数变换
def logTransform(c, img):# 3通道RGBh,w,d = img.shape[0],img.shape[1],img.shape[2]new_img = np.zeros((h,w,d),np.float32)for i in range(h):for j in range(w):for k in range(d):new_img[i,j,k] = c*(math.log(1.0+img[i,j,k]))# # 灰度图专属# h, w = img.shape[0], img.shape[1]# new_img = np.zeros((h, w),np.uint8)# for i in range(h):#    for j in range(w):#         new_img[i, j] = c * (math.log(1.0 + img[i, j]))# #经过log变换后0-255变成了0-5.5,需要在8比特的显示器中进行显示,则需要将其归一化规范化到(0,255)中,即使用normalize来实现new_img = cv2.normalize(new_img, new_img, 0, 255, cv2.NORM_MINMAX)new_img = cv2.convertScaleAbs(new_img)return new_img#幂律变换
import math
import numpy as np
import cv2def gammaTranform(c,gamma,image):h,w,d = image.shape[0],image.shape[1],image.shape[2]new_img = np.zeros((h,w,d),dtype=np.float32)for i in range(h):for j in range(w):new_img[i,j,0] = c*math.pow(image[i, j, 0], gamma)new_img[i,j,1] = c*math.pow(image[i, j, 1], gamma)new_img[i,j,2] = c*math.pow(image[i, j, 2], gamma)cv2.normalize(new_img,new_img,0,255,cv2.NORM_MINMAX)new_img = cv2.convertScaleAbs(new_img)#将图像转化为8比特图像,uint8return new_img# 替换为你的图片路径
img = cv2.imread(r'E:\SCUT_study_files\PYTHON\Image_Processing\colorful_lena.jpg')
img1 = cv2.imread(r'E:\SCUT_study_files\PYTHON\Image_Processing\colorful_lena.jpg')
new_img = gammaTranform(1,2.5,img1)
log_img = logTransform(1.0, img)
cv2.imshow('log_img', log_img)
cv2.imshow('new_img', new_img)
cv2.waitKey(0)

log变换、幂律变换gamma>1、幂律变换gamma<1,原图

【图像处理】——灰度变换心得(cv2.normalize规范化值0-255,cv2.convertScaleAbs(new_img)转为8位图)相关推荐

  1. opencv cv2.THRESH_OTSU 二值化

    原文地址:http://www.mamicode.com/info-detail-907204.html Otsu's二值化 我们前面说到,cv2.threshold函数是有两个返回值的,前面一直用的 ...

  2. opencv二值化的cv2.threshold函数

    (一)简单阈值 简单阈值当然是最简单,选取一个全局阈值,然后就把整幅图像分成了非黑即白的二值图像了.函数为cv2.threshold() 这个函数有四个参数,第一个原图像,第二个进行分类的阈值,第三个 ...

  3. OpenCV:二值化函数cv2.threshold

    目录 功能作用: (一)简单阈值 (二)自适应阈值: (三)Otsu's二值化 功能作用: 二值化函数作用:图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效 ...

  4. 图像处理: 如何将 像素值 控制在 值域[0, 255]

    概念 在做计算机视觉方向项目的时候,往往需要进行图像处理.但是在此过程中,常常会遇到 对 像素值 进行 变换计算 后,像素值 超出 值域区间 [0, 255] 的情况.再加上计算过程中各自 float ...

  5. 神奇。cv2.calcHist()函数返回值,灰度值为255的像素个数看似为0。

    cv2.calcHist()函数返回值,灰度值为255的像素个数看似为0的细节探究. import cv2 import matplotlib.pyplot as plt import numpy a ...

  6. 【图像处理】 均值滤波、中值滤波和高斯滤波

    [图像处理] 均值滤波.中值滤波和高斯滤波 均值滤波 中值滤波 高斯滤波 结语 均值滤波 均值滤波是一种线性滤波,会导致图像模糊. 均值滤波器卷积核:卷积核中心点对应原图上的位置的值,变为卷积核覆盖的 ...

  7. 2021-07-27 对labelme标注出来的JSON文件进行灰度图转化(标签值0.1.2.3.4)

    对labelme标注出来的JSON文件进行灰度图转化(标签值0.1.2.3.4) 原图如下: 标注后生成json文件如下: import cv2 import numpy as np import j ...

  8. java图像处理:灰度化,二值化,降噪,切割,裁剪,识别,找相似等

    前段时间做爬虫,涉及到对图片验证码的破解,这里罗列一些常用的图像处理方法,都很简单并没用到什么复杂的算法,所以不涉及opencv,都是一些直接对rgb像素点的操作,很简单也很好理解,至于识别直接用的t ...

  9. 数字图像处理 -灰度变换 之 对数变换(Log Transformation)

    本文参考了 以下这篇文章 [数字图像处理]灰度变换--反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割 https://blog.csdn.net/zhoufan900428/article/d ...

最新文章

  1. 探秘Spring AOP (六) Spring AOP 实现原理 1
  2. (转)虚函数和纯虚函数区别
  3. Linux下百度云盘报 获取bdstoken失败
  4. django 项目中遇到的问题(持续更新中)
  5. [hihoCoder] 第五十周: 欧拉路·二
  6. html双箭头菜单,CSS常用样式之绘制双箭头的示例代码
  7. c 数据压缩算法_Redis存储总是心里没底?你大概漏了这些数据结构原理
  8. python将一行作为字段_Python 变量代入,指定某一行截取输出字段怎么办?
  9. 线代总结1 线性代数中的线性方程组
  10. 【转载】企业安全建设之数据库安全(中)
  11. python中浮点型占几个字节_python的浮点数占多少个字节
  12. 微信小程序跳转视频号直播
  13. ipv6正则表达式 java_正则表达式,匹配所有有效格式的IPv6地址
  14. cisco 3750G 冗余备份
  15. NOJ [1184] Elaine's Queue
  16. BTA | 量子链帅初:区块链的开发很漫长,技术突破要有十年心理预期
  17. mysql异地双活架构,银行跨数据中心数据库双活架构设计:五大难点攻克
  18. 字符串相乘——大整数乘法
  19. 计算KS值的标准代码
  20. sql位运算符【(位与)、~(位非)、|(位或)、^(位异或)】与位移

热门文章

  1. TempDB为什么要根据CPU数目来决定文件个数
  2. 如何做PHD (1)
  3. 采用HttpModules来重写URLs(原理篇)转
  4. 在bootstrap table中使用Tooltip
  5. Ajax — 聊天机器人演示
  6. [bzoj2729][HNOI2012]排队 题解 (排列组合 高精)
  7. RUP,XP,敏捷原理
  8. C#3.0之神奇的Lambda表达式和Lambda语句
  9. 还原virtual函数的本质-----C++
  10. javascript --- 隐藏内部实现(最小暴露原则)