【数字图像处理】改变图像灰度级别

改变图像灰度级别

首先,对原始图像 O O O进行灰度级量化:

q = int ⁡ ( O 2 i ) × 2 i , q=\operatorname{int}\left(\frac{O}{2^{i}}\right) \times 2^{i}, q=int(2iO)×2i,

灰度级别256,128,64,32,16,8,4,2 对应 i = 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 i=0,1,2,3,4,5,6,7 i=0,1,2,3,4,5,6,7。

例如,

  • 灰度级别为2时,原始图像中属于[0,128)的值被量化为0,属于[128, 256)的值被量化为128。

  • 灰度级别为4时,原始图像中属于[0, 64)的值被量化为0,属于[64,128)的值被量化为64,属于[128,192)的值被量化为128,属于[192, 256)的值被量化为192.

然后将灰度值范围变换到[0,255]:

q = int ⁡ ( 255 × q max ⁡ ( O ) ) . q=\operatorname{int}\left(255 \times \frac{q}{\max (O)}\right). q=int(255×max(O)q).

cpp 复制代码
import cv2 as cv
import numpy as np

img = cv.imread('blurry_moon.tif', cv.IMREAD_GRAYSCALE)


print(np.max(img))
# 灰度级别: 256、128、64、32;16、8、4、2
for i in range(8):
    img_q = (img / (2 ** i)).astype(np.uint8) # 保留前8-i比特
    img_q = img_q * (2 ** i)
    img_q=img_q / np.max(img_q) * 255  # [0-255]
    img_q=img_q.astype(np.uint8)

    cv.imwrite('level{}.jpg'.format(i), img_q)

思考:改变图像灰度级别与压缩量化的区别?

相关推荐
石臻臻的杂货铺1 分钟前
Codex + Claude Code + 一个编排器:独立开发者的「一人军团」实战手册
人工智能
壹通GEO8 分钟前
GEO数据分析不再难:1键生成归因热力图+预警报告
人工智能·数据挖掘·数据分析
肾透侧视攻城狮11 分钟前
《TensorFlow生态全景图:核心组件、扩展工具与工业级应用深度解读》
人工智能·深度学习·tensorflow生态系统·tfcore/.js/lite·tf extended/hub·tf serving·生态系统优势对比
两万五千个小时14 分钟前
构建mini Claude Code:11 - 从「被动等待」到「主动找活」
人工智能·python·架构
朴实赋能15 分钟前
当情绪可以被看见:AI手环如何成为青少年心理的“预警哨”?
人工智能·发疯可耻但有用·男生女生一起愁愁愁·不上称的倔强·沉默的忧郁#情绪消费·爱你老己·新型校园攀
zhangshuang-peta16 分钟前
基于人工智能的客户支持,配备安全人工智能客服机器人
人工智能·安全·机器人·ai agent·mcp·peta
發糞塗牆18 分钟前
【Azure 架构师学习笔记 】- Azure AI(8)-Azure AI Foundry
人工智能·ai·azure
yhdata20 分钟前
68.72亿元!智能家居芯片市场规模锁定,技术迭代催生行业新增长极
大数据·人工智能·智能家居
Σίσυφος190021 分钟前
OpenCV 之双线性插值
人工智能·opencv·计算机视觉
HelloDong21 分钟前
不用框架,100 行 TypeScript 从零实现一个真正的 AI Agent(附完整可运行代码)
人工智能