图像采集和量化

453 阅读1分钟

图像采集

原理

图像采集是将一幅在空间上连续分布的模拟图像分割成M * N的网格,每个网格称为一个像素,M*N称为图像的空间分辨率。根据香农采样定理,只要采样的频率大于被采样信号最高频率的2倍,就可以由采样信号对原始信号的形态进行完整恢复。图像采集可以看作是对原始图像信号的一种数字化逼近。

例子

图片
图片

对咖啡杯图像进行不同频率采样后所得结果。

量化

原理

模拟图像经过采样后,在空间上实现了离散化,并形成像素。但采样所得的像素值(即灰度值)依旧是连续量。采样后所得的各像素的灰度值从连续量到离散量的转换称为图像灰度的量化。

图片
图像的量化比率决定了图像的颜色精细程度。
图片

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from skimage import data
from matplotlib import pyplot as plt
from skimage.color import rgb2gray
import numpy as np

image = data.coffee()
#grayimg = rgb2gray(image)
print(image.shape)
print(type(image))

ratio = 128
ratio1 = 16
ratio2 = 4
cols=image.shape[0]
rows=image.shape[1]
chanals=image.shape[2]
img1=np.zeros((cols,rows,chanals),dtype='int32')
img2=np.zeros((cols,rows,chanals),dtype='int32')
img3=np.zeros((cols,rows,chanals),dtype='int32')
for i in range(cols):
  for j in range(rows):
    for k in range(chanals):
      img1[i,j,k]=int(image[i,j,k]/ratio)*ratio
      img2[i,j,k]=int(image[i,j,k]/ratio1)*ratio1
      img3[i, j, k] = int(image[i, j, k] / ratio2) * ratio2
img1 = rgb2gray(img1)
img2 = rgb2gray(img2)
img3 = rgb2gray(img3)
plt.subplot(221),plt.imshow(image)
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(222),plt.imshow(img1,cmap='gray')
plt.title('Binary image'), plt.xticks([]), plt.yticks([])
plt.subplot(223),plt.imshow(img2,cmap='gray')
plt.title('16 level'), plt.xticks([]), plt.yticks([])
plt.subplot(224),plt.imshow(img3,cmap='gray')
plt.title('64 level'), plt.xticks([]), plt.yticks([])
plt.show()

本文使用 文章同步助手 同步