opencv基础篇--到底什么是图像

什么是图像?英语中有两个单词来形容图像,一个是picture,一个是image。这两者虽然是形容同一个东西,但却又有着区别。picture代表实而有物的真实图像;而image代表着计算机中存储的图像,也代表想象中的图像。

而我们更多研究的便是image,计算机图像从广义地可分为矢量图和像素图(位图)。矢量图,是由一系列计算机指令描述和记录的一幅图,一幅图可以解为一系列由点、线、面等组成的子图。像素图,则是由很多个点组成的,每个点都是由二进制数据来描述和存储其颜色和亮度等信息。

矢量图,只能表示有规律的线条组成的图形,本身绘制的图像不很真实;但文件存储量很小,可任意缩放。

像素图,各个组成的点都是离散的,绘制的图像可以很复杂且真实;但文件存储量大,放大后会看到明显的锯齿。

在计算机图像中,我们使用opencv去处理和分析的Image中,更多的是像素图。接下来,我将详细地介绍我理解的像素图,根据其存储和显示的方式可以分为多种类型的像素图。

从清晰图角度去理解图像

图像的清晰度由图像的两个基本属性,分辨率与像素深度(也叫位分辨率)。而我们经常遇到的分辨率有两种,即显示器分辨率与图像分辨率。

1.分辨率

通常我们所看到的一张图像,决定它的分辨率的分别是它的图像分辨率和显示器分辨率。

图像的分辨率代表着图像在计算机中存储的量的大小,分辨率越大,所在的内存容量越大。例如,1920x1080则是由200多万个像素单元组成。但是,图像的清晰度还由ccd靶面大小决定,靶面越大,进光量越大,图像效果越好。

显示器的分辨率代表着屏幕对图像像素的解析能力,分辨率越大,解析能力越强,图像越清晰。但是显示器的屏幕越大时,相对解析能力越弱,图像越不清晰。此时,需要显卡GPU进行插值算法优化,提升显示的清晰度。

此处,我还将介绍一下3个地方的分辨率,加深对像素及分辨率的理解。分别是手机的像素、电脑显示屏的分辨率以及电影院的分辨率。

手机的屏幕很小,而通常像素可以达到500万到几千万不等,但拍摄图像的效果还不如一般的数码摄像机的几十万像素。这其中一个十分重要的原因便在于手机在接收像素之后,便会利用算法对像素进行疯狂插值,而后对外公布的像素参数有自然含有大量水分。

电脑显示屏,一般19寸的显示屏最大分辨率为1440*900,大致解析129万像素最为合适,因此用这种显示屏播放1080p的视频时,除非播放器有插值算法优化处理,否则并不能看到1080P视频的效果。

电影的分辨率,在现在数字化时代可以达到2K甚至4K分辨率,当然在国内目前多为2K。4k分辨率一部电影所占内存可达到200-500G,但是电影院播放的银屏十分大,因此4K的数字放映机必须对视频进行插值算法优化,从而投放在银屏上的像素可能达到上亿,才能保证高画质和清晰度,目前这种技术以及片源都难以达到。

2.像素深度

像素深度是指在计算机内存单元中每个像素所用的位数。在计算机图像中,根据像素深度的不同,大致可分为4类,二值化图像,灰度图像,单通道彩色图像以及三通道彩色图像(即24位真彩图)。当然还有其他多通道的彩色图像,这里暂不讨论。

一幅图像在计算机中,被保存为一个头加上一个包含像素数据的内存区。头,即是定义或申明一个结构体或者类;像素数据内存区,即存储每个像素点的地方。

在opencv中,描述一幅图像常用到两个概念,一个是通道,一个是像素深度。但其实质两者是统一的。每一个颜色通道占8位(1个字节),像素深度即通道的数量。一个像素点,通道数越多,那么能描述这一个像素点的方式就越多,这个像素点表现得就越精准,同时,这个像素的深度越大,所占的内存空间也就越大了。

一幅图像,在opencv中可以保存在一个Iplimage、cvmat结构体以及cv::mat类中,其像素在结构体及类中均以行与列的形式存在;在内存区均以二维数组的形式存储。

什么是图像 -- opencv基础的更多相关文章

  1. OpenCV基础篇之读取显示图片

    程序及分析 /* * FileName : read.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Tue 13 May ...

  2. C#_GDI+详细教程(图形图像编程基础)

    第7章  C#图形图像编程基础 本章主要介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础.C#图像处理基础以及简单的图像处理技术. 7.1  GDI+绘图基础 编写图形程序时需要使用GDI( ...

  3. H265编码等级以及图像的基础知识

    1. H265编码等级 H264编码profile & level控制 .H265编码初探 H265 profile H265 Profile & Level & Tier 介 ...

  4. opencv基础教程 之 图像基础和绘图

    1,教程:感谢小强 2,用argparse传参数来显示一张图片 #!/usr/bin/python #linux系统 #coding=utf-8 import cv2 import argparse ...

  5. OpenCV 基础知识------图像创建、访问、转换

    cvCreateImage函数-- Cxcore数组操作 创建头并分配数据 IplImage* cvCreateImage( CvSize size, int depth, int channels ...

  6. 【opencv基础】图像的几何变换

    参考 1. 图像的几何变换-平移和镜像: 2.图像的几何变换-缩放和旋转: 3. opencv图像旋转实现: 完

  7. 【opencv基础】图像翻转cv::flip详解

    前言 在opencv中cv::flip函数用于图像翻转和镜像变换. 具体调用形式 void cv::flip( cv::InputArray src, // 输入图像 cv::OutputArray ...

  8. 图像混合学习。运用加权函数,学习opencv基础操作

               {          cout<<     }           {          cout<<     }       ,,logoImage.c ...

  9. OpenCV图像的基础叠加

    程序及分析 /* * FileName : blend.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Mon 28 Ju ...

随机推荐

  1. Visual odometry and zed's IMU fusion on RTAB-Map

    "When using /camera/odom, you don't need to use visual_odometry node. rtabmap should be subscri ...

  2. vim使用及vimrc配置

    参考文章 https://segmentfault.com/a/1190000011466454 如有侵权,请联系本人删除!

  3. P2252 取石子游戏 威佐夫博弈

    $ \color{#0066ff}{ 题目描述 }$ 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆 ...

  4. 树状数组【洛谷P3586】 [POI2015]LOG

    P3586 [POI2015]LOG 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1 ...

  5. ELK (Elasticsearch , Logstash, Kibana [+FileBeat])

    ELK 简述: ELK 是: Elasticsearch , Logstash, Kibana 简称, 它们都是开源软件. Elasticsearch[搜索]是个开源分布式基于Lucene的搜索引擎, ...

  6. Qt 学习之路 2(50):自定义可编辑模型

    Home / Qt 学习之路 2 / Qt 学习之路 2(50):自定义可编辑模型 Qt 学习之路 2(50):自定义可编辑模型 豆子 2013年5月13日 Qt 学习之路 2 13条评论 上一章我们 ...

  7. php 替换 oracle 数据字段中“看不见”换行符号

    工作需要,把oracle中的数据导出csv,导出代码如下:<?php$file_name = "申請書承認(予定休出).csv";header("Content-D ...

  8. 老实pear_Excel 操作类 Spreadsheet_Excel_Writer 常用参数说明

    (如果是PHP5项目就不用往下看了,因为PHP5项目可以直接用PHPExcel,方便快捷) 手上有个PHP4的修改项目,要修改Excel的导出,然后再把导出的Excel再导入到系统里. 在导入的时候, ...

  9. JDK原生的HttpURLConnection请求实例

    不想说啥,上代码! package com.my.https; import java.io.BufferedReader; import java.io.IOException; import ja ...

  10. 编写高质量代码:Web前端开发修炼之道(一)

    最近老大给我们买来一些技术方面的书籍,其实很少搬着一本书好好的完整的看完过,每每看电子档的,也是打游击式的看看这章,瞅瞅那章,在那5本书中挑了一本比较单薄的<编写高质量代码web前端开发修炼之道 ...