RGB图转为灰度图的方法

您所在的位置:网站首页 rgb转换为索引图像怎么设置 RGB图转为灰度图的方法

RGB图转为灰度图的方法

2024-07-17 04:02| 来源: 网络整理| 查看: 265

我们日常的环境通常获得的是彩色图像,很多时候我们常常需要将彩色图像转换成灰度图像。也就是3个通道(RGB)转换成1个通道。 (1)平均法 最简单的方法当然就是平均法,将同一个像素位置3个通道RGB的值进行平均。 I(x,y) = 1/3 * I_R(x,y) +1/3 * I_G(x,y)+ 1/3 * I_B(x,y)

原始图像: 在这里插入图片描述

import cv2 import numpy as np lenna = cv2.imread("lenna.png") row, col, channel = lenna.shape lenna_gray = np.zeros((row, col)) for r in range(row): for l in range(col): lenna_gray[r, l] = 1 / 3 * lenna[r, l, 0] + 1 / 3 * lenna[r, l, 1] + 1 / 3 * lenna[r, l, 2] cv2.imshow("lenna_gray", lenna_gray.astype("uint8")) cv2.waitKey()

在这里插入图片描述 (2)最大最小平均法 取同一个像素位置的RGB中亮度最大的和最小的进行平均。`

I(x,y) = 0.5 * max(I_R(x,y), I_G(x,y), I_B(x,y))+ 0.5 * min(I_R(x,y), I_G(x,y), I_B(x,y)) for r in range(row): for l in range(col): lenna_gray[r, l] = 1 / 2 * max(lenna[r, l, 0], lenna[r, l, 1], lenna[r, l, 2]) + 1 / 2 * min(lenna[r, l, 0], lenna[r, l, 1], lenna[r, l, 2]) cv2.imshow("lenna_maxmin", lenna_gray.astype("uint8")) cv2.waitKey()

在这里插入图片描述 (3)加权平均法 I(x,y) = 0.3 * I_R(x,y) +0.59 * I_G(x,y)+ 0.11 * I_B(x,y) 这是最流行的方法。几个加权系数0.3,0.59,0.11是根据人的亮度感知系统调节出来的参数,是个广泛使用的标准化参数。

for r in range(row): for l in range(col): lenna_gray[r, l] = 0.11 * lenna[r, l, 0] + 0.59 * lenna[r, l, 1] + 0.3 * lenna[r, l, 2] cv2.imshow("lenna_weighted", lenna_gray.astype("uint8")) cv2.waitKey()

在这里插入图片描述 (4)二值图像 不严谨的时候,我们也可以把灰度图称为黑白图像,实际上除了灰度图,还有一种图像叫二值图,也就是灰度只有0和255,这才是“真正的黑白图像”,因为0代表黑色,255代表白色。我们设定一个阈值T,当某像素点的灰度值大于T时,设定该像素点的值为255,当小于T时,设定为0。

lenna_binary = np.zeros_like(lenna_gray) threshold = 100 for r in range(row): for l in range(col): if lenna_gray[r, l] >= threshold: lenna_binary[r, l] = 255 else: lenna_binary[r, l] = 0 cv2.imshow("lenna_binary", lenna_binary.astype("uint8")) cv2.waitKey()

在这里插入图片描述 (5)反转图像 反转图像也很简单:s = 255-r。反转图像特别适用于增强暗色图像中的白色或灰色细节。

x_ray = cv2.imread("x_ray.png", 0) row, col = x_ray.shape x_ray_inverse = np.zeros_like(x_ray) for r in range(row): for l in range(col): x_ray_inverse[r, l] = 255 - x_ray[r, l] cv2.imshow("x_ray", x_ray) cv2.imshow("x_ray_inverse", x_ray_inverse) cv2.waitKey()

补充: 在这里插入图片描述

参考文章: https://blog.csdn.net/saltriver/article/details/79677116?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162046582416780262570149%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162046582416780262570149&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-79677116.first_rank_v2_pc_rank_v29&utm_term=%E7%81%B0%E5%BA%A6%E5%9B%BE%E7%9A%84%E8%BD%AC%E6%8D%A2&spm=1018.2226.3001.4187



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3