Python|加权平均法读取灰度化图像介

Posted 算法与编程之美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python|加权平均法读取灰度化图像介相关的知识,希望对你有一定的参考价值。

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

灰度化的原理时假定每个像素点的三通道值相同,并用统一的灰度值待代替。加权平均法读取灰度化图像时,是将三个通道的通道值进行加权,然后用来代替灰度。

实际中加权平均法RGB灰度化的公式为:

式中表示三个通道的权值,且三者之和为1。

解决方案

首先运用opencv读取图像:

import cv2 as cv
  src =  cv.imread("D:\\pecture\\PmZT25jtyg_small.jpg")    #读取图片。

再读取出图像每个像素点的三个通道值,运用加权平均法的思想计算灰度值,输出灰度图像,在运用加权平均法得到灰度图像后,为确保图像的灰度化误差不大,还需要对权值进行调整,调整时可以和图像原本的灰度化进行对比:

 

import cv2 as cv
  import numpy as np
  def gray_pixels(image):
      for i in range(len(image)):
          for  j in range(len(image[i])):
               a = image[i][j]         #得到每个像素点的三通道值,需要注意的是,python读取出图片的三通道值不再是R、G、B三个顺序,而是变成了G、B、R这个顺序。
               g = 0.59*a[0]+0.11*a[1]+a[2]*0.30   #运用加权平均法公式计算出该像素点的灰度值。
               image[i][j]=g        #将图片的三个通道变成一个通道,并将得到的灰度值赋给该通道。
  cv.imshow("gary image",image)

src =  cv.imread("D:\\pecture\\PmZT25jtyg_small.jpg")
  cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
  cv.namedWindow("input  image",cv.WINDOW_AUTOSIZE)

gray =  cv.cvtColor(src,cv.COLOR_BGR2GRAY)   #通过函数将RGB图像转化为灰度化图像
  cv.imshow("input image",gray)
  gray_pixels(src)
  cv.waitKey(0)
  cv.destroyAllWindows()

 

例如上面的例子,可以得到两张不同的灰度化图像:

(图2.1运用加权平均法得到的灰度化图像)

(图2.2运用内置函数得到的灰度化图像)

结语

通过对比发现,上例中的权值得到的灰度化图像并不能很好的接近原始灰度图像,所以,还需要对权值不断地更新实验,以达到更好的灰度化效果。

实习编辑:衡辉

稿件来源:深度学习与文旅应用实验室(DLETA)

以上是关于Python|加权平均法读取灰度化图像介的主要内容,如果未能解决你的问题,请参考以下文章

图像灰度化的常用三种方式及其实现

图像处理基于matlab GUI数字图像处理含Matlab源码 652期

python opencv身份证灰度图二值化应该怎么处理

纸牌识别基于matlab形态学扑克牌识别含Matlab源码 1352期

钟表识别基于matlab GUI形态学钟表识别含Matlab源码 1351期

缺陷检测基于matlab形态学液晶显示器表面缺陷检测含Matlab源码 1304期