什么是图像 -- opencv基础
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基础的更多相关文章
- OpenCV基础篇之读取显示图片
程序及分析 /* * FileName : read.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Tue 13 May ...
- C#_GDI+详细教程(图形图像编程基础)
第7章 C#图形图像编程基础 本章主要介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础.C#图像处理基础以及简单的图像处理技术. 7.1 GDI+绘图基础 编写图形程序时需要使用GDI( ...
- H265编码等级以及图像的基础知识
1. H265编码等级 H264编码profile & level控制 .H265编码初探 H265 profile H265 Profile & Level & Tier 介 ...
- opencv基础教程 之 图像基础和绘图
1,教程:感谢小强 2,用argparse传参数来显示一张图片 #!/usr/bin/python #linux系统 #coding=utf-8 import cv2 import argparse ...
- OpenCV 基础知识------图像创建、访问、转换
cvCreateImage函数-- Cxcore数组操作 创建头并分配数据 IplImage* cvCreateImage( CvSize size, int depth, int channels ...
- 【opencv基础】图像的几何变换
参考 1. 图像的几何变换-平移和镜像: 2.图像的几何变换-缩放和旋转: 3. opencv图像旋转实现: 完
- 【opencv基础】图像翻转cv::flip详解
前言 在opencv中cv::flip函数用于图像翻转和镜像变换. 具体调用形式 void cv::flip( cv::InputArray src, // 输入图像 cv::OutputArray ...
- 图像混合学习。运用加权函数,学习opencv基础操作
{ cout<< } { cout<< } ,,logoImage.c ...
- OpenCV图像的基础叠加
程序及分析 /* * FileName : blend.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Mon 28 Ju ...
随机推荐
- The method identifyUser(Arrays.asList("group001"), String, new HashMap<>()) is undefined for the type AipFace
在使用百度云的人脸识别sdk时遇到了这个错误,网上百度不到解决的方法,当我浏览百度云的时候发现了这个 于是考虑到版本可能更新,出现了新的函数代替旧的函数,于是去查文档,文档链接如下 https://c ...
- python文件操作-修改文件中的内容
一.文件读写有缓冲区 fw = open('nhy','w') fw.write('sdfsdf') fw.flush()# 把缓冲区里面的数据立即写到磁盘上 fw.close() 二.with的用法 ...
- django 实现电子支付功能
思路:调用第三方支付 API 接口实现支付功能.本来想用支付宝来实现第三方网站的支付功能的,但是在实际操作中发现支付宝没有 Python 接口,网上虽然有他人二次封装的的 Python 接口,但是对我 ...
- 谈谈你对Java平台理解
一说起对Java理解很容易就联想到Java的一些特性: 1,面向对象(继承,多态,封装) 2,平台无关性(”一次书写,到处运行“,jvm运行.class文件) 3,语言(泛型,lambda) 4,类库 ...
- jquery 中 $('div','li')是什么意思?
Javascript 专业回答 2013-07-18 10:59 这个写法没有错误,而且那个人跟你说的也没错,是选择li里面所有div 前面几位都学艺不精,都说错了 要搞清楚$('div','l ...
- vue从一个页面跳转到另一个页面并携带参数
1.需求: 点击商场跳转到商业体列表 解决方案: 元页面: a标签中添加跳转函数 <a class="orderBtn1 sIRicon2" href="javas ...
- windows 下 redis 安装
百度下载 windows 版本 的 redis... 解压 安装为windows服务 安装命令: redis-server.exe --service-install redis.windows.co ...
- bzoj1079 着色方案 记忆化搜索(dp)
题目传送门 题目大意: 有k种颜色,每个颜色ci可以涂个格子,要求相邻格子颜色不能一样,求方案数.ci<=5,k<=15. 思路: 题目里最重要的限制条件是相邻格子颜色不能相同,也就是当前 ...
- Aop之使用Castle动态代理实现对方法的拦截
using System; using System.Linq; using Castle.DynamicProxy; namespace AopTest { class AopTest { stat ...
- asp.net mvc 静态化
静态化的基本理解就是,常用的资源以文本形式保存,客户端访问时无需经过程序处理,直接下载 但是不存在的文件需要经过程序处理,文件内容如果需要有更动或删除,则直接删除文件本身 1.IIS Express ...