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. python3好用的mysql.connector库

    python3好用的mysql.connector库 from mysql.connector import connect #建立mysql连接,生成一个mysql.connector对象 conn ...

  2. docker容器管理及网络管理

    防火墙规则—— INPUT 主要用于主机防火墙,设置规则屏蔽处理进入本机的数据包示例:禁止10.180.100.141这个机器访问我本机的web服务iptables -t filter -A INPU ...

  3. python自带的排列组合函数

    需求: 在你的面前有一个n阶的台阶,你一步只能上1级或者2级,请计算出你可以采用多少种不同的方法爬完这个楼梯?输入一个正整数表示这个台阶的级数,输出一个正整数表示有多少种方法爬完这个楼梯. 分析:提炼 ...

  4. [转]An STL compliant sorted vector-源码示例

    原文地址:http://www.codeproject.com/Articles/3217/An-STL-compliant-sorted-vector 最近在看sorted vectored的一些东 ...

  5. 使用C#来编写一个异步的Socket服务器

    介绍 我最近需要为一个.net项目准备一个内部线程通信机制. 项目有多个使用ASP.NET,Windows 表单和控制台应用程序的服务器和客户端构成. 考虑到实现的可能性,我下定决心要使用原生的soc ...

  6. SLAM技术在国内的发展现状

    近年来,由于扫地机的出现使得SLAM技术名声大噪,如今,已在机器人.无人机.AVG等领域相继出现它的身影,今天就来跟大家聊一聊国内SLAM的发展现状. SLAM的多领域应用 SLAM应用领域广泛,按其 ...

  7. tomcat更改web文件路径

    由于代码太长,记不住!只能自己做个小笔记了!! <Context path="/" docBase="/opt/appl/merch.bak" debug ...

  8. npm 安装 sass=-=-=

    先按照 cnpm  .....因为外网安不上... cnpm install node-sass --save-dev cnpm install sass-loader --save-dev

  9. 64位的notepad++没有插件管理

    下载的64位的notepad++没有插件管理:需要自己下载这个插件: - plugin manager的下载地址为:https://github.com/bruderstein/nppPluginMa ...

  10. 记一次ctf比赛解密题的解决(可逆加密基本破解之暴力破解)

    题目是这个样子的: code.txt的内容是这样: 有点吓人木?233333 其实解密之后是这样的: 找到一点安慰没? 好了,废话不多说.讲解一下思路吧. 我们知道base64加密是属于可逆加密的.简 ...