图像灰度化

栏目: 编程工具 · 发布时间: 5年前

内容简介:离研究生毕业只有六个月了,毕业设计也该动手了。去年开题,选择了《基于图像处理的客观题自动阅卷系统的设计与实现》这个题目。今年中期,考虑了很久,最终还是没有换题目。想要做AIOps,但是自己基础薄弱,也没有特定的方向,到了六月份也不一定能完成。保险起见,还是做阅卷系统吧!阅卷系统主要有五个方面的研究内容,分别是图像预处理、目标检测、图像分割、手写识别和移动Web。其中图像预处理包括试卷图像的灰度化、二值化、去噪、倾斜矫正等;目标检测是为了定位学号和答案的位置,并且提取出这些信息;图像分割是为了分割学号和多选题

离研究生毕业只有六个月了,毕业设计也该动手了。去年开题,选择了《基于图像处理的客观题自动阅卷系统的设计与实现》这个题目。今年中期,考虑了很久,最终还是没有换题目。想要做AIOps,但是自己基础薄弱,也没有特定的方向,到了六月份也不一定能完成。保险起见,还是做阅卷系统吧!

阅卷系统主要有五个方面的研究内容,分别是图像预处理、目标检测、图像分割、手写识别和移动Web。其中图像预处理包括试卷图像的灰度化、二值化、去噪、倾斜矫正等;目标检测是为了定位学号和答案的位置,并且提取出这些信息;图像分割是为了分割学号和多选题的字符;手写识别是为了识别手写字符,包括数字和字母;移动Web是为了方便老师随时随地使用系统。

本文,就来研究一下图像的灰度化。

理论

在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。一般有以下四种方法对彩色图像进行灰度化:

1、分量法

将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应用需要选取一种灰度图像。f1(i,j)=R(i,j) f2(i,j)=G(i,j) f3(i,j)=B(i,j) 其中fk(i,j)(k=1,2,3)为转换后的灰度图像在(i,j)处的灰度值。

2、最大值法

将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。f(i,j)=max(R(i,j),G(i,j),B(i,j))

3、平均值法

将彩色图像中的三分量亮度求平均得到一个灰度图。f(i,j)=(R(i,j)+G(i,j)+B(i,j))/3

4、加权平均法

根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像。f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))

更多内容参考 图像分析

实践

算法的实现,主要参考 Python下OpenCV的使用 – 图像灰度化

安装opencv

这个毕业设计,打算使用 python 来实现,编辑器使用pycharm。图像处理方面,主要使用opencv。首先安装opencv,很简单,一条命令即可:

pip install opencv-python

如果离线安装的话,不妨参考 使用OpenCV实现实时视频目标检测

安装完成后,命令行中输入 python ,进入python shell。输入 import cv2 回车,如果没有报错,说明安装成功。

简单灰度化

在加载图片的时候,直接调用opencv的灰度化方法。

import cv2
image = cv2.imread('image/test.jpg')
grayimage = cv2.imread('image/test.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imshow('image',image)
cv2.imshow('grayimage',grayimage)
cv2.waitKey(0)

图像灰度化

分量法

import cv2
image = cv2.imread('image/test.jpg')

b,g,r = cv2.split(image)   # the order is not r,g,b

cv2.namedWindow("Image")
cv2.imshow("Image",image)

cv2.namedWindow("ImageR")
cv2.imshow("ImageR",r)

cv2.namedWindow("ImageG")
cv2.imshow("ImageG",g)

cv2.namedWindow("ImageB")
cv2.imshow("ImageB",b)
cv2.waitKey(0)

cv2.destroyAllWindows()

图像灰度化

最大值法

import cv2
import numpy
image = cv2.imread('image/test.jpg')

shape = (image.shape[0],image.shape[1])
newImage = numpy.ndarray(shape,image.dtype)

for i in range(image.shape[0]):
    for j in range(image.shape[1]):
       newImage[i,j] = max(image[i,j][0],image[i,j][1],image[i,j][2])

cv2.namedWindow("NewImageMax")
cv2.imshow("NewImageMax",newImage)
cv2.waitKey(0)

cv2.destroyAllWindows()

图像灰度化

平均值法

import cv2
import numpy
image = cv2.imread('image/test.jpg')

shape = (image.shape[0],image.shape[1])
newImage = numpy.ndarray(shape,image.dtype)


for i in range(image.shape[0]):
    for j in range(image.shape[1]):
       newImage[i,j] = (int(image[i,j][0]) + int(image[i,j][1]) + int(image[i,j][2])) / 3

cv2.namedWindow("NewImageAver")
cv2.imshow("NewImageAver",newImage)
cv2.waitKey(0)

cv2.destroyAllWindows()

图像灰度化

加权平均法

import cv2
import numpy
image = cv2.imread('image/test.jpg')

shape = (image.shape[0],image.shape[1])
newImage = numpy.ndarray(shape,image.dtype)

for i in range(image.shape[0]):
    for j in range(image.shape[1]):
        newImage[i,j] = 0.11 * image[i,j][0] + 0.59 * image[i,j][1] + 0.30 * image[i,j][2]

cv2.namedWindow("NewImageWeightAver")
cv2.imshow("NewImageWeightAver",newImage)
cv2.waitKey(0)

cv2.destroyAllWindows()

图像灰度化


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

机器消灭秘密

机器消灭秘密

安迪•格林伯格 (Andy Greenberg) / 王崧、王涛、唐禾 / 重庆出版社 / 2017-8-10 / 49.8

《机器消灭秘密》一书中,格林伯格深入研究并生动再现了那些拥有全能技术的网络安全魔术师,他们将任何企图染指个人隐私的所谓国家机密的保密性打得粉碎。这本精心组织的著作是对此题材感兴趣的读者的必读之书,即便现在你可能不感兴趣,将来也极有可能希望了解这些内容,因为任何人都会不可避免地置身其中。无论你是初涉电脑屏幕之后的虚拟战场的新生,还是经验丰富的维基解密观察家,本书都是不可多得的上乘之作,你总会在其中发......一起来看看 《机器消灭秘密》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具