OpenCV中的图象通道问题

1.通常我都用cvLoadimage()函数进行读图像,参数选择上建议大家选择CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR,这样的参数组合读出的图像信息保持了原是图像的信息(包括通道信息和位深信息)。其中像素深度指每个通道用多少位来表示,通道就是指每个像素的颜色数了。而我们一般在图像处理书上看到的图像的像素的bit数,在这里应该是:通道*像素深度。可以看出像素的bit数和像素深度不是同一个概念。

2.同时应该注意的是opencv在读遥感图像上所产生的问题:通常的遥感图像有两种,一种是全色影像,只有1个波段,这种影像通常空间分辨率都很高;另一种是多光谱图像,这种图像通常同时拥有超过3个以上的波段数。而在opencv中cvLoadimage()函数好像只能同时读取三个波段,当读取一景四个波段的遥感影像时(读取参数为CV_LOAD_IMAGE_ANYDEPTH |CV_LOAD_IMAGE_ANYCOLOR),事实上只读取了第一个波段的数据,这一点可以从读得的结果图像IplImage的nChannels和imageSize两个参数看出来,一个参数为1,一个参数的数据大约为整景图像大小的四分之一。而cvLoadimage函数读取参数为1时,此时又读取了四个波段中的前三个波段,大小显示大约为整景图像大小的四分之三。

3.从以上分析来看,通道数和波段书本质上说的是一回事。只是所用的地方不一样而与。nChannel=1表示图像只有一个通道,表示灰度图象;对遥感影像来说就是一副单波段影像,通常也是灰度图像。

4.总得来讲,多波段遥感图像仍然可以用opencv来进行处理分析,虽然他只可以同时读三个波段。因为遥感图像处理中我们通常只对一个波段进行处理,所以我们可以其他的软件进行波段分离后再拿到opencv进行编程处理,当然这不是最好的方法。

5.上面所说的opencv只能读取最多三个波段的影像只限于利用cvLoadimage函数读取影像,其他方法可以实现读取多波段影像不考虑在本范围之内。

 

无论是读入还是读出图像时,都要对图像的类型,位数,以及通道数进行相关的设置,其中通道数(channels)较令人费解:

整理一下OpenCV中文论坛里关于图像通道的问题,如下:

(1)图像的通道指的是什么?是不是灰度图的通道数为1,彩色图的通道为3?(zhuker)

正确! 
基本上,描述一个像素点,如果是灰度,那么只需要一个数值来描述它,就是单通道。 
如果一个像素点,有RGB三种颜色来描述它,就是三通道。(ollydbg23)

(2)对于2通道和4通道如何看待?哪位帮忙解释一下?(feixue)

我见过四通道的,两通道暂时没见过,估计只是编程的方便吧。windows的bmp有时候是一个四通道图像,R、G、B加上一个A通道,表示透明度。(eralvc)

是的,最后这个,一般叫做alpha通道,表示透明度的。(ollydbg23)

4通道通常为RGBA,在某些处理中可能会用到。 
2通道图像不常见,通常在程序处理中会用到,如傅里叶变换,可能会用到,一个通道为实数,一个通道为虚数,主要是编程方便。 
还有一种情况就是16位图像,本来是3通道,但是为了减少数据量,压缩为16位,刚好两个通道,常见格式有RGB555或RGB565,也褪撬礡占5位,G占5或6位,B占5位,也有RGBA5551格式。古老的格式,不用也罢。(Loren)

主要是有些摄像头常采用一些比较“古怪”的格式,没办法。 
补充一种情况,目前常见的一些摄像头喜欢采用YUV2等格式,格式如下YUYV,在处理的时候可以用4通道或者2通道来处理。 
如原格式为:Y1UY2V,插值成为Y1UV,Y2UV 就成两个彩色点了。 
YCrCb也有类似压缩情况。(Loren)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值