当前位置: 首页 > news >正文

opencv和gdal的读写图片波段顺序问题

最近处理遥感影像总是不时听到 图片的波段错了,一开始不明就里,都是图片怎么就判断错了。

1、图像RGB波段顺序判断

后面和大家交流,基本上知道了一个判断标准。

一般来说,进入人眼的自然画面在计算机视觉中一般是rgb波段顺序表示的,人类的常识和自然感知与 rgb波段顺序的表示 是贴合的。

这个rgb波段图像和人类感知的贴合主要体现在,常规事物在人眼中的颜色和在图片中的颜色的一致性。比如说,一个自然界中的白色物体在rgb图像中呈现出来的也是白色,而如果你的图片是bgr波段保存的话,犹豫b波段代表blue颜色通道,即蓝色,蓝色处于第一个颜色波段,这时白色的物体在bgr图像中就会变成蓝色,这时,呈现出来的图像与自然界不一样,就会说波段错了。

如下是不同波段顺序呈现的图像效果:

这种现象并不是很好观察,特别是在这个图片泛滥的时代,我们早已不再对自然颜色有着明确的认知。而且当rgb图像的三个波段的数值所呈现的颜色不是那么鲜明时,变成bgr也不好判断。这里介绍一种判断方法。

就是找一个包含不同颜色的事物,具有鲜明对比性的,比如田径场,包含棕红色的橡胶跑道和绿色的草坪设施,你把图像的波段变成rgb或bgr就会发现明显的颜色变化。或者借助arcmap也可以修改图像的波段与常规事物颜色进行对比判断你的图片是否是正确的rgb波段

如下所示正常RGB图像和BGR图像:

正常的RGB图像
波段顺序为BGR的图像

2、opencv和gdal

opencv读取图片一般是bgr、hwc形式的,这个得理解一下,一般的图像是rgb波段的,也就是说,opencv读取图片时会把波段顺序调换一下,这个操作是不以输入图像是否是rgb格式为转移的。即使输入图像是bgr的,opencv读取也会进行波段顺序的变换进行读取,使bgr读进去变成rgb。所以在输出图片imwrite时要注意你当前的波段顺序是rgb还是bgr。如果读取后是bgr输出也是bgr,读取后变换成rgb输出也会变成rgb。

gdal也是同理,gdal用来读取处理遥感影像较多,因为具有处理地理坐标的功能。gdal与opencv不同,在图像波段数小于等于4时,gdal读取图片是 rgbn、chw形式的,所以明确读取的波段顺序后,才可以明确下一步处理的正确性。

其他pillow库、scikit-image库也是一样的使用,明确其对数据的处理方法,才能保证得到想要的图像处理结果。

3、transpose改变图像维度

其中,chwhwc是表示图像的维度的,分别c是波段数(通道数)channelh是图像的像素高度heightw是图像的像素宽度width,有时候需要转换图像的维度,比如hwc变成chw便于处理,这时可以使用 transpose(2,0,1) 来实现,transpose函数可以转换图像的维度,实际上就是换个方向摆放图像的数据,也可以说采用不同的坐标系来表示图像。

http://www.lryc.cn/news/268400.html

相关文章:

  • PyQt 打包成exe文件
  • 【Web2D/3D】SVG(第二篇)
  • leetcode18. 四数之和
  • (十八)Flask之threaing.local()对象
  • ffmpeg 硬件解码零拷贝unity 播放
  • 高德地图_公共交通路径规划API,获取两地点之间的驾车里程和时间
  • PyTorch深度学习实战(28)——对抗攻击(Adversarial Attack)
  • MariaDB单机多实例的配置方法
  • 加强->servlet->tomcat
  • Python初学者必须吃透的69个内置函数!
  • Day73力扣打卡
  • Android原生实现分段选择
  • 在 Unity 中获取 Object 对象的编辑器对象
  • idea自动注释
  • 阿里云 ACK 云上大规模 Kubernetes 集群高可靠性保障实战
  • 如何在无公网IP环境使用Windows远程桌面Ubuntu
  • Python——yolov8识别车牌2.0
  • Cookie的详解使用(创建,获取,销毁)
  • shell脚本自动化部署Zabbix4.2(修改脚本替换版本)
  • java SSM课程平台系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • k8s二进制最终部署(网络 负载均衡和master高可用)
  • 【51单片机系列】DS1302时钟模块
  • 深入理解C语言中冒泡排序(优化)
  • 低代码选型注意事项
  • Caffeine--缓存组件
  • Centos7:Jenkins+gitlab+node项目启动(1)
  • starrocks集群fe/be节点进程守护脚本
  • 奇富科技跻身国际AI学术顶级会议ICASSP 2024,AI智能感知能力迈入新纪元
  • 如何在Android Termux中使用SFTP实现远程传输文件
  • 高频知识汇总 | 【操作系统】面试题汇总(万字长博通俗易懂)