You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从256位单色图像生成最高有效二进制及格雷编码位平面?

复现《Digital Image Processing》中的二进制/格雷编码位平面提取

核心原理

256级灰度图的每个像素值对应8位二进制数,最高4位是第7、6、5、4位(从0开始计数,第7位为权重128的最高有效位)。格雷编码位平面的生成逻辑是:先将像素值转换为格雷码(转换公式:格雷码 = 二进制值 ^ (二进制值 >> 1),^为异或操作),再提取对应位平面。


步骤1:提取二进制位平面

以Python结合numpy和PIL实现,代码简洁直观:

  1. 读取图像并转为灰度数组:
from PIL import Image
import numpy as np

img = Image.open("your_image.png").convert("L")
img_arr = np.array(img, dtype=np.uint8)
  1. 提取指定高位的位平面(以第7位为例):
def extract_binary_bit_plane(arr, bit):
    # 提取第bit位,将0/1转为0/255以便可视化
    bit_plane = ((arr >> bit) & 1) * 255
    return Image.fromarray(bit_plane.astype(np.uint8))

# 生成最高4位(7、6、5、4)的二进制位平面
for bit in [7,6,5,4]:
    plane = extract_binary_bit_plane(img_arr, bit)
    plane.save(f"binary_bit_{bit}.png")

步骤2:提取格雷编码位平面

先将像素值批量转为格雷码,再复用二进制位平面的提取逻辑:

  1. 像素值转格雷码:
def pixel_to_gray_code(arr):
    return arr ^ (arr >> 1)
  1. 提取格雷编码的高位平面:
gray_arr = pixel_to_gray_code(img_arr)
for bit in [7,6,5,4]:
    gray_plane = extract_binary_bit_plane(gray_arr, bit)
    gray_plane.save(f"gray_bit_{bit}.png")

补充说明

  • 生成的位平面以0(黑色)和255(白色)显示,和教材中的可视化效果完全匹配。
  • 该内容出现在块变换编码章节,是因为位平面分析能直观展示图像的冗余分布:高位平面保留了图像的核心轮廓信息,低位平面对应细节与噪声,这正是变换编码实现压缩的核心依据。

内容的提问来源于stack exchange,提问作者nic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 02:40:01