Python自编图像处理函数之灰度化函数

利用Python自编的灰度化算法程序,目的是深入了解算法本身

需要导入的库

因为是自编的算法,所不打算用什么图像处理函数。

import numpy as np
import matplotlib.pyplot as plt

利用Matplotlib导入图片

img = plt.imread('../lena.png')
plt.imshow(img)
plt.axis('off')

执行之后可以看到效果:
彩图

平均值灰度化算法

#先获取图片的尺寸
#matplotlib获取的图片会变成numpy的数组,所以可以用shape来获取长度和维度
px = img.shape
gray_img = np.zeros((px[0],px[1]))
#使用循环来求取每一个像素灰度值的平均值,因为是彩色图像,所以是三维的。
for i in range(px[0]):
    for j in range(px[1]):
        gray_img[i][j] = (img[i][j][0]+img[i][j][1]+img[i][j][2])/3
plt.imshow(gray_img,cmap='gray')
plt.axis('off')
plt.show()

灰度图像

不过,这种直接从matlab移植出来的方法显然有些笨拙

所以我们不妨换一种实现的方式,优化一下算法

考虑numpy数组的特殊性,所以可以利用切片实现

gray_img2 = (img[:,:,0]+img[:,:,1]+img[:,:,2])/3
plt.imshow(gray_img2,cmap='gray')
plt.axis('off')
plt.show()

同样可以达到上面的效果,但代码更加轻便了。

这里只弄了平均值算法,利用同样的原理也可以实现最大值法和权值平均法,这两个方法在之前的博客中有用matlab实现过,因此在这里不再重新弄了。

发布了5 篇原创文章 · 获赞 0 · 访问量 178
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览