将灰度图像Lena 分解成8个位平面,分别去掉从1到7个位平面,与剩余的位平面图像比较的源代码
时间: 2024-03-25 15:40:25 浏览: 119
lena256色灰度图像的8位位平面分解
5星 · 资源好评率100%
以下是使用Python和OpenCV库实现将灰度图像Lena分解成8个位平面,并分别去掉从1到7个位平面,与剩余的位平面图像比较的源代码:
```python
import cv2
# 读取灰度图像Lena
img = cv2.imread('lena.png', cv2.IMREAD_GRAYSCALE)
# 将灰度图像分解成8个位平面
bits = [cv2.bitwise_and(img, 2**i) for i in range(8)]
# 分别去掉从1到7个位平面,与剩余的位平面图像比较
for i in range(1, 8):
removed_bits = bits[:i] + [0]*(8-i)
removed_img = cv2.merge(removed_bits)
remaining_bits = bits[i:]
remaining_img = cv2.merge(remaining_bits)
diff_img = cv2.absdiff(img, removed_img + remaining_img)
cv2.imshow(f'Removed {i} bits', removed_img)
cv2.imshow(f'Remaining {8-i} bits', remaining_img)
cv2.imshow(f'Difference with original', diff_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
该代码首先使用`cv2.imread`函数读取灰度图像Lena,然后使用`cv2.bitwise_and`函数将灰度图像分解成8个位平面。接着,它使用循环逐个去掉从1到7个位平面,并分别显示剩余的位平面图像、被去掉的位平面图像和与原始图像的差异图像。最后,使用`cv2.imshow`函数显示这些图像,并使用`cv2.waitKey`函数等待用户按下任意键后关闭窗口。
注意:该代码是基于OpenCV 4.0.0版本编写的,如果您使用的是其他版本,可能需要进行适当的修改。
阅读全文