计算机视觉相关数据,【计算机视觉(一)】图像数据表示

数字图像是连续的光信号经过传感器的采样在空间域上的表达。一张图像是由一个包含若干个像素点的矩形框组成的,试着把一张图在“画图”软件中放大会有更直观的感受,下面是lena图放大后的效果。

d7450d7a0902

lena放大图

可以看到图像是由很多个小格子组成的,每个小格子都只有一种颜色,这是构成图像的最小单元——像素(pixel)。不同的像素值代表了不同的颜色,像素值的值域一般在0到255(包括)之间,也就是256个整数,因此可以用完整个unsigned char类型的值域,所以像素值一般都是用unsigned char类型表示。

但0-255并不能映射到像上图所示的彩色,而只是对应黑色到白色之间的灰度值(grayscale),如下图:

d7450d7a0902

灰度值

要表示彩色像素,先回忆初中物理学的三原色,红绿蓝(RGB),饱和的红绿蓝三种颜色叠加起来就是白色,假如其中一种颜色不那么“饱和”则可以表示其他的颜色,调节三种颜色的比例则可以表示我们常看到的24位色。灰度值的颜色空间在几何上可以用一根直线表示,而RGB彩色空间在几何上则对应了一个立方体,如下图:

d7450d7a0902

RGB

因此,要表示彩色值,我们需要3个维度,也就是3个图像通道,每个像素值用3个数字表示,如(255,255,255)表示白色,(255,0,0)表示红色,(255,255,0)表示黄色。

像素在图像上的排布使用左手坐标系,原点在左上角,如下图:

d7450d7a0902

图像坐标系

在OpenCV的python库中访问图像像素的示例代码如下:

# coding: utf-8

import cv2

import numpy as np

def main():

# 读取lena图

img = cv2.imread('lena.jpg')

# 打印img的维度

print 'img.shape:',img.shape

# 打印img的一个像素值

print 'img[0,0]:',img[0,0]

# 打印img的一个像素的一个通道值

print 'img[0,0,0]:',img[0,0,0]

if __name__ == '__main__':

main()

d7450d7a0902

运行结果

在OpenCV的Python库中,图像是用numpy库的array结构表示的,你可以理解为矩阵。img这个numpy.array的第一个维度沿着行方向,第二个维度沿着列方向,第三个维度沿着通道。numpy.array与Matlab中的矩阵很相似,也支持多个数据同时访问,如img[0, :]可以表示图像的第一行所有像素、img[..., 0]可以表示图像的第一个通道所有像素。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值