数字图像处理——采样和量化

 图像的数字化是将连续的模拟图像转换为计算机课处理的离散数字图像的过程,该过程包括两种操作:采样和量化。采样是图像空间坐标的离散化,决定了图像的空间分辨率。量化是图像响应幅值的离散化,决定了图像的灰度分辨率。采样额量化是将模拟图像转换为数字图像的两个最重要的操作。

图像采样代码: 

# 导入所需要的包
from skimage import data,io
from matplotlib import pyplot as plt
#from matplotlib import pylot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False

# 载入测试图像
image=io.imread('cat.jpg')
plt.subplot(1,2,1)
plt.imshow(image)
plt.title('原始图片')

print(image.shape)  # 显示图像原始大小
print(type(image))  # 显示图像类型
ratio = 5  # 设置采样比率
# 设置采样后的图片大小
image1 = np.zeros((int(image.shape[0] / ratio), int(image.shape[1] / ratio), image.shape[2]), dtype='int32')
# 对图像进遍历
for i in range(image1.shape[0]):
    for j in range(image1.shape[1]):
        for k in range(image1.shape[2]):
            delta = image[i * ratio:(i + 1) * ratio, j * ratio:(j + 1) * ratio, k]  # 获取需要采样的图像块
            image1[i, j, k] = np.mean(delta)  # 计算均值,并存入结果图像

plt.subplot(1,2,2)
plt.imshow(image1)
plt.title('采样后')
plt.savefig('plt.jpg')
plt.show()

图像量化代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取原始图像
img = cv2.imread('./cat/cat1.png')

# 获取图像高度和宽度
height = img.shape[0]
width = img.shape[1]
# 创建一幅图像
new_img = np.zeros((height, width, 3), np.uint8)
# 图像量化操作 量化等级为2
for i in range(height):
    for j in range(width):
        for k in range(3):  # 对应BGR三分量
            if img[i, j][k] < 128:
                gray = 0
            else:
                gray = 128
            new_img[i, j][k] = np.uint8(gray)
# 显示图像
cv2.imshow("src", img)
cv2.imshow("", new_img)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值