图像运算和图像增强一

1.图像点运算之图像灰度化处理

(1)图像点运算概念
图像点运算(Point Operation)指对于一幅输入图像,将产生一幅输出图像,输出图像的每个像素点的灰度值由输入像素点决定。点运算实际上是灰度到灰度的映射过程,通过映射变换来达到增强或者减弱图像的灰度。
(2)图像灰度化处理
彩色图像包括RGB三个分量,而灰度图像就是把RGB三个分量相等的过程。灰度图像中每个像素仅具有一种样本颜色,其灰度是位于黑色与白色之间的多级色彩深度。

import cv2
import numpy as np
import matplotlib.pyplot as plt#读取原始图像
img_BGR=cv2.imread('luo.png')
img_RGB = cv2.cvtColor(img_BGR,cv2.COLOR_BGR2RGB)#BGR 转换为 RGB
img_GRAY = cv2.cvtColor(img_BGR,cv2.COLOR_BGR2GRAY) #灰度化处理
img_HSV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HSV) #BGR 转 HSV
img_YCrCb = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YCrCb) #BGR 转 YCrCb
img_HLS = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HLS) #BGR 转 HLS
img_XYZ = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2XYZ) #BGR 转 XYZ
img_LAB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2LAB) #BGR 转 LAB
img_YUV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YUV) #BGR 转 YUV#调用matplotlib显示处理结果
titles = ['BGR', 'RGB', 'GRAY', 'HSV', 'YCrCb', 'HLS', 'XYZ', 'LAB', 'YUV']
images = [img_BGR, img_RGB, img_GRAY, img_HSV, img_YCrCb, img_HLS, img_XYZ, img_LAB, img_YUV]
for i in range(9):plt.subplot(3,3,i+1),plt.imshow(images[i[,'gray')plt.title(titles[i])plt.xticks([]),plt.yticks([])
plt.show()


(3)基于像素操作的图像灰度化处理
1.最大值灰度处理方法
灰度值=彩色图像R、G、B三个分量中的最大值,该方法灰度化处理后的灰度图亮度很高。
gray(i,j)=max(R(i,j),G(i,j),B(i,j))
2.平均灰度处理方法
3.加权平均灰度处理方法
gray(i, j) =0.30xR(i, j)+0.59xG(i, j)+0.11xB(i, j)

import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取原始图像
img=cv2.imread('luo.png')
#读取图像高度和宽度
height=img.shape[0]
width=img.shape[1]#创建一副图像
grayimg1=np.zeros((height,width,3),np.uint8)
grayimg2=np.zeros((height,width,3),np.uint8)
grayimg3=np.zeros((height,width,3),np.uint8)#图像灰度处理
for i in range(height):for j in range(width):#获取图像RGB最大值 gray=max(R,G,B)gray1=max(img[[i,j],[0]],img[i,j][1],img[i,j][2])#灰度值为RGB三个分量的平均值gray2= (int(img[i,j][0]) + int(img[i,j][1]) + int(img[i,j][2])) / 3#灰度加权平均法gray3= 0.30 * img[i,j][0] + 0.59 * img[i,j][1] + 0.11 * img[i,j][2]#获取图像素赋值 grayimg1[i,j]=np.uint8(gray1)grayimg2[i,j]=np.uint8(gray2)grayimg3[i,j]=np.uint8(gray3)#显示图像
cv2.imshow('src',img)
cv2.imshow('gray1',grayimg1)
cv2.imshow('gray2',grayimg2)
cv2.imshow('gray3',grayimg3)
#等待显示
cv2.waitKey(0)
cv2.destoryAllWindows()

2.图像灰度线性变换

(1)灰度线性变换
图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提高图像的对比度。

当 α=1,b=0 时,保持原始图像
当 α=1,b!=0 时,图像所有的灰度值上移或下移
当 α=-1,b=255 时,原始图像的灰度值反转
当 α>1 时,输出图像的对比度增强
当 0<α<1 时,输出图像的对比度减小
当 α<0 时,原始图像暗区域变亮,亮区域变暗,图像求补

(2)图像灰度上移变换
通过灰度上移提升图像的亮度,由于图像的灰度值位于0至255区间之内,所以需要对灰度值进行溢出判断

import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取原始图像
img=cv2.imread('luo.png')
#图像灰度转换
grayimage=cv2.cvtcolor(img,cv2.COLOR_BGR2GRAY)#获取图像高度和宽度
height=grayimage.shape[0]
width=grayimage.shape[1]
#创建一副图像
result=np.zeros((height,width,3).np.uint8)#图像灰度上移变换 DB=DA+50
for i in range(height):for j in range(width):if(int(grayinage[i,j]+50)>255):gray=255else:gray=int(grayimage[i,j]+50)result[i,j]=np.uint8(gray)
#显示图像
cv2.imshow('Grayimage',grayimage)
cv2.imshow('Result',result)
#等待显示
cv2.waitKey(0)
cv2.destoryAllWindows()


(3)图像对比度增强变换 DB=DAX1.5
图像对比度减弱变换 DB=DA×0.8
图像灰度反色变换 DB=255-DA

import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取原始图像
img=cv2.imread('luo.png')
#图像灰度转换
grayimage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#获取图像高度和宽度
height=grayimage.shape[0]
width=grayimage.shape[1]
#创建一副图像
result1=np.zeros((height,width,3),np.uint8)
result2=np.zeros((height,width,3),np.uint8)
result3=np.zeros((height,width,3),np.uint8)#图像对比度增强变换 DB=DAX1.5
#图像对比度减弱变换 DB=DA×0.8
#图像灰度反色变换 DB=255-DA
for i in range(height):for j in range(width):gray2 = int(grayimage[i,j]*0.8)gray3 = 255 - grayimage[i,j]if(int(grayimage[i,j]*1.5)>255):gray1=255else:gray1=int(grayimage[i,j]*1.5)result1[i,j]=np.uint8(gray1)result2[i,j]=np.uint8(gray2)
#显示图像
cv2.imshow('Grayimage1',grayimage1)
cv2.imshow('Grayimage2',grayimage2)cv2.imshow('Grayimage3',grayimage3)#等待显示cv2.waitKey(0)cv2.destoryAllWindows()

图像运算和图像增强一相关推荐

  1. HALCON学习笔记(三)——图像运算

    图像运算:以图像为单位进行的操作(该操作对图像中的所有像素同时进行),运算的结果是得到一幅灰度分布与原图灰度分布不同的新图像.具体的运算包括算术和逻辑运算,通过改变像素的值达到图像增强的效果. 图像的 ...

  2. python怎么编写视觉识别_Python视觉识别--OpenCV色彩空间\图像运算\ROI(四)

    (七) 色彩空间 什么是色彩空间,人们建立了多种色彩模型,以一维.二维.三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间 色彩空间有很多,但是常用的色彩空间一共5种:RGB ...

  3. [python opencv 计算机视觉零基础到实战] 六、图像运算

    一.学习目标 了解opencv中图像运算的方法 了解opencv中图像运算的运用 如有错误欢迎指出~ 二.了解OpenCV中图像运算的运用 目录 [python opencv 计算机视觉零基础到实战] ...

  4. Python3与OpenCV3.3 图像处理(五)--图像运算

    一.本节简介 图像运算也就是像素运算,简单的说就是利用算术运算或逻辑运算,对图像的每个像素进行处理(例如两个图像的合并).虽然我们可以像第二节课那样,一个像素一个像素的遍历并修改值,但是如果图像分辨率 ...

  5. Python Imaging Library: ImageOps Module(图像运算模块)

    Python Imaging Library: ImageOps Module(图像运算模块) (版本1.1.3) ImageOps模块包含许多"现成的"图像处理操作.这个模块是实 ...

  6. OpenCV图像运算+Moviepy实现视频旋转叠加

    ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 在<OpenCV-Python常用图像运算:加减乘除幂开方对数及位运算&g ...

  7. 统计函数耗费时间,简单的图像运算,定义感兴趣区域 第二章

    一:统计函数耗费时间 先上代码吧~: double duration; duration=static_cast<double>(getTickCount()); colorReduce( ...

  8. opencv图像运算(python)

    图像运算 图像运算 图像加法运算 加号运算符 cv2.add 图像加权和 按位逻辑运算 按位与 按位或 按位非 按位异或 掩膜 图像与数值的运算 位平面分解 图像加密和解密 数字水印 图像运算 图像加 ...

  9. 3.2 Python图像的频域图像增强-高通和低通滤波器

    3.2 Python图像的频域图像增强-高通和低通滤波器 文章目录 3.2 Python图像的频域图像增强-高通和低通滤波器 1 算法原理 1.1理想滤波器 1.2巴特沃斯滤波器 1.3指数滤波器 2 ...

最新文章

  1. 2021年大数据Flink(四十二):​​​​​​​BroadcastState
  2. oracle使用内存配置,OraclePGA内存的配置和使用
  3. unity 实现文本选中_Unity中如何读取TXT文本内容
  4. Flutter Web 应用程序的 URL 中删除前导`#`
  5. ios下获取所有实体/虚拟网卡的信息,并以此判断设备所处的网络状态
  6. 【学习笔记】springboot的AutoConfigurationImportSelector 、@EnableAutoConfiguraion和@import解析
  7. mysql存储过程实例_mysql存储过程案例讲解
  8. [css] css中的border:none和border:0px有什么区别?
  9. 如何使得客户端和服务器端完美配合做IOS应用内付费
  10. 11篇SCI论文,多次跨专业,武大物理博士敲开美国顶尖生命医学研究中心大门...
  11. HTML5 Geolocation(地理定位)
  12. 第00次博文——我对Python的期待与思考
  13. 2. 通用基础技术框架搭建
  14. 7500 cpuz跑分 i5_Intel觉醒!i7-8700K/i5-8600K首发评测:4核变6核 跑分凶残
  15. 【嵌入式开发】STM8S103F3P6单线半双工串口通信
  16. 什么是top sql
  17. solidworks装配体改为柔性_软件技巧:大神整理的SolidWorks技巧总结
  18. mysql 必知必会【沈剑——公众号架构师之路】
  19. bga焊盘怎么做_焊接焊盘和BGA设计规则
  20. window class, OO

热门文章

  1. Linux下干净卸载mysql详解
  2. 华为路由器忘记密码_如果忘记密码,如何访问路由器
  3. 基于区块链的大数据交易模式研究与探索
  4. 从安装jdk开始(安装jdk的步骤)
  5. 网页模板设计中5种常见的设计版式类型介绍
  6. 神经网络 深度神经网络,深度神经网络训练
  7. 【论文阅读术语】benchmark、baseline、backbone、ground truth
  8. BoundsChecker的用法
  9. 新手必备AutoCAD练习图纸,分分钟提高你的绘图效率!
  10. 数组,数组的定义,数组的注意事项