数字图像处理不得不知的点(2)

【接前面一二三四五】

六、IplImage里面部分数据的意义:

一幅图像

当然这个的显示多了一个框框。

图像本身的数据:

IplImage 里面的基本数据

src->depth 图像深度 8

src->nChannels 图像的通道数 3

src->width 图像的宽度像素 154

src->height 图像的高度像素 200

src->widthStep 图像的行所占字节数 = width*nChannels = 154*3

位深度如果对应于一个cvMat里面的一个数据的话应该是:CV_8UC3

看出宽是154个像素。高是200个像素

所以创建一个这样的图像的话应该是:

cvCreateMat(200,154,CV_8UC3);

如果是IplImage的话,它的创建应该是

cvCreateImage(cvSize(154,200),8,3);

IplImage *src = cvLoadImage(“pic.jpg”,1);//

七、彩图的一个像素为什么通常是 8位深,3通道?

打开ps,然后打开拾色器。就会发现红色可以这样描述:当前选中的颜色,有一个直观的色彩表示方法,然后由hsb,lab,rgb,cmyk四种色彩空间,其中rgb采用了两种形式描述一种是:显而易见的,RGB还有一种是#6b3522。

拾色器采用了类似HSV的描述方法,可以看到对比图。下图来自:

http://www.360doc.com/content/13/1105/14/10724725_326803150.shtml

为什么是8位?

对于RGB这种颜色模式来说,红就是rgb(255,0,0),不红就是rgb(0,0,0)那么在红与不红之间,我们把它分成256份。0代表红色没有,255代表红色加到最足。

128大概是这样一个状况:rgb里面的中间红色。

这种分法就是从红到黑分了256份。数值越大越红。

当然你也可以定义一种比如你的名字叫做李明,有一种李明色彩空间,李明说我的世界就是红与黑。就这一个通道。然后他还说了,256太多了,数不过来,就定义了3种颜色,哪一种就是黑,一种就是中间红,还有一种就红。那这是他的色彩空间。

他一共就数3个数就描述了这种色彩空间0,1,2。

然而大千世界,这并不够,所以我们多分了几份儿,我们把RGB三种色彩空间分成了每个颜色从黑到红,从黑到绿,从黑到蓝都分成了256份。那蓝绿色不动,红色从0到255是256种情况,绿色也是256中,蓝色也是256。所以对于分成8位的这个方式我们把颜色排列一下得到256*256*256种颜色。

不过问题又来了,好像这么分的确是好啦。不过为什么不是7位或者4位或者10位来划分一个颜色梯度。10位能表示更多的色彩呢。这么说的确说有道理。那么从另外一个角度来分析吧。

【这个应该是长期磨合的过程。颜色的确开始有可能被分成了100个梯度或者200个。至于为什么最后就变成了256个。可能是由于如果刚好一个字节是8位。8位可以表示256种状态。而这种色域对于我们人眼来看,就足够丰富了,那么两者一拍即合。】

八、那么为什么一个字节是8个二进制位呢?

//百度里面网友对于这个的解释很坑,莫信。

https://www.zhihu.com/question/20870588

详细的看这里,就记住一句话历史原因就可以了,由于历史的设定,以及普及程度,加上工业化的运用,很多东西如果脱离了商业就跑不动,如果加上商业就飞一样的跑。【比如大家现在都在吵吵的 所谓云技术,云技术卖的就两个点,云存储、云计算,无非是有些地方存储很厉害,包括存,足够大,取,足够快,这样就能够卖存储。对于计算,就是有些处理器很强大,处理足够快,这样就可以卖计算。因为不知道存储或者计算的点到底在哪里,所以又加了一个概念叫做云。其实这个东西有前身的,云计算的前身在国内是有前身的叫做网格计算,也是分发到各个地方去处理数据,把结果进行交付。只不过当时是科研用途,并没有做商业推广,本身名字也不如云计算顺口,不好推广,没经力支持,所以就黄了。】把8作为2进制位,加上本身换算容易。所以就顺理成章的成为八进制表示一个字节。

而字节这个概念,来自我们熟悉的A-65 0-48 a-97,的那张ASCII码,一个美国字加各种字符是127还是128个啊?总之2的7次方就表示了,所以一个字节也曾经是7位过,就是7位能够刚好表示一个字。所以可能加上一些翻译的原因,最终变成了字节这种叫法,但是其实就是1个字可以用7个二进制位表示。

加上历史原因一个字用8个二进制位表示。

加上翻译原因,一个字节用8个二进制位表示。

【关于字为什么翻译做字节 字节为什么 是字 的说法,纯属杜撰,帮助理解,囧囧囧】

我们要做的是 熟悉这两种rgb的表示方式,rgb(255,0,0)和#ff0000。并且会换算。并且能够看到一种颜色,经过不断调试,基本上弄出一个颜色。

这种数字的组合,就是能量的叠加,当一个地方同时接受红黄蓝三色光的时候就是白色,随着能量的减少,最后就变成了黑色。所以如果颜色深,数值就往小给,如果颜色鲜亮,就往大里给。偏什么色就往里面加什么颜色。

给出几个示例,

这种习题就自己练习吧,比如写出红绿蓝三色, 黄色的表示,粉色的表示,灰色的表示,然后是快速写出你的鼠标垫的主色调的颜色。如果是黑色的话就写一个紫色的。总之稍微练习一下。

既然8位能够表示,那么从红到黑分成16384份,那就是16位表示,行不行,当然也行。关于到底分成多少份有什么用?

参考

http://wenda.hexun.com/question/34986.html

中的数模转换器部分

模-数转换器(ADC):12位与14位

每台数码相机都有某一种模-数转换器,将传感器捕捉到的模拟信号转换为构成最终图像的数字信号。大部分数码单反相机使用12位或14位ADC。

在这里,ADC的位数与传感器可以捕捉到的灰阶级数有关。例如,12位的ADC,其每个像素可以捕捉4,096级灰阶;而14位的ADC每个像素可以捕捉16,384级灰阶。

如此看来,14位ADC毫无疑问是赢家:其可捕捉的灰阶值是12位的4倍!不过,多出来的2位并不能增加相机的动态范围,而只是在一定的动态范围内,增加了灰阶级数。就像把一块长面包切片,把每片都切成原来的一半,总片数增加一倍,同时每一片都变薄了,但面包并没有变大。(译者注:就是说14位ADC可以获得更细腻的层次过渡

所以,14位ADC可以使你获得更佳的画质,但是这种改善只在阴影和平滑的渐变过渡(比如日落照片)中比较明显。

分多了并不会怎样,只不过能表述更多的细节,你发现你的书的书页都是白色的,但是那些白色都一样么?不都一样那么到底有什么差异?如果在黑白图里面,只能告诉你都是白色。但是如果在灰度图里面,你会发现有些色差,如果分的份数越多,那么细节就描述的越细腻,有时候你根本不知道#FFCCCC跟#FFCCCB有什么区别。【事实上我觉得你就是不知道如果不告诉你谁是谁的话,并且在不同光照的情况下你可能觉得后面一个色会更亮一点。】所以通常我们就用一个字节8个二进制位来表述某个通道的值。用256*256*256表述我们能见到的所有色彩,事实上基本足够用了。

明天下午貌似不在,如果明天下午在的话,想说说 关于彩图 灰度图 二值图。因为我在检索的时候发现了这样一篇个问题。然而解答并不好。

时间: 2024-10-25 17:24:37

数字图像处理不得不知的点(2)的相关文章

《数字图像处理原理与实践(MATLAB版)》一书之代码Part9

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part9,辑录该书第431至第438页之代码,供有需要读者下载研究使用.至此全书代码发布已经接近尾声,希望这些源码能够对有需要的读者有所帮助.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 首先给出的是原书P438所列之程序源

《数字图像处理原理与实践(MATLAB版)》一书之代码Part8

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part8,辑录该书第375至第415页之代码,供有需要读者下载研究使用.至此全书代码发布已经接近尾声,希望这些源码能够对有需要的读者有所帮助.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P385-1 function y

数字图像处理作业使用OpenCV - 使用笔记

数字图像处理作业的输入图像全部都是灰度图像,所以汇总一下自己遇到的问题答案. OCV的图像容器是Mat<typename>,可以用imread(filename)读取图像,filename是c string,char*和const char*都行.灰度图像的typename是uchar,RGB图像的typename是Vec3b. Mat容器如果直接使用操作符赋值,只会复制一份信息头而不会复制包含数据的矩阵,由此而降低内存的浪费和速度,所以这样得到的多个Mat对象都指向同一个数据矩阵,换句话说,

数字图像处理1 、2基本原理

数字图像处理matlab版 冈萨雷斯 图书笔记系列,是个人读书笔记,写的不会太详细,具体内容要看课本(有例子和程序),这里只是罗列些基本的和重要的概念,方便复习,记忆和理解,弄点例子和练习. 什么东西都那么详细,是不现实的,大脑记不住,也太没效率.厚书可以慢看,但不能厚重的回忆,要把书读薄. 第一章 绪言和第二章 基本原理.对应课本,第1,2章. 解释了图像处理的含义,以及低,中,高级处理的对应内容. 数字图像是二维的,用函数表示为f(x, y),x行,y列,也可用二维矩阵表示. 注: Matl

初始----python数字图像处理--:环境安装与配置

一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此,我们这里使用python这个脚本语言来进行数字图像处理. 要使用python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是linux系统,安装都是非常简单的. 要使用python进行各种开发和科学计算,还需要安装对应的包.这和matlab非常相似,只是matla

OpenCV-跟我一起学数字图像处理之直方图均衡化

从这篇博文开始,小生正式从一个毫不相干专业转投数字图像处理.废话不多说了,talk is cheap. show me the code. 直方图均衡化目的 由于一些图像灰度的分布过于集中,这样会导致图像的层次不够分明,直方图均衡化就是为了让图像的灰度分布更均匀,图像的层次感更强. 数学原理 基于连续灰度分布的结论推导 直方图均衡化属于数字图像处理中灰度变换(intensity transformation)的内容,灰度变换的目的就是找到一个合适的映射函数s=T(r).将原图像的灰度值映射到新的

《数字图像处理原理与实践(MATLAB版)》一书之代码Part5

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part5,辑录该书第225至第280页之代码(此处应部分读者之需求调整了代码发布的顺序--详细说明请见下面的文章链接),供有需要读者下载研究使用.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P245 I = imread(

《数字图像处理原理与实践(MATLAB版)》一书之代码Part6

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part6,辑录该书第281至第374页之代码,供有需要读者下载研究使用.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P338 i=double(imread('vase.tif'));[C,S]=wavedec2(i,2,

《数字图像处理原理与实践(MATLAB版)》一书之代码Part3

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part3(P81~135),代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明http://blog.csdn.net/baimafujinji/article/details/40987807 P92 i = imread('Hepburn.jpg');%注意w和h1这两个模板是等价的w = [1 1 1;1 1 1;1 1 1]/9;h1 =