图像处理:图片像素深度unit16位转unit8位
一 背景
遥感图像一般像素深度比较高,基本的就是unit16了,但是如果想在OpenCV中正确使用,而且不丢失数据RGB三通道信息,就需要转为unit8才能进行其他分析。
二 分析
unit16的图像最大值为216-1 = 65535,而OpenCV中的图像最大值为28-1 = 255,当大于255时会自动变为255,这样数据信息就丢失了。下面代码采用的方式是线性缩放,将0到65535的数值线性缩放到0到255
三 代码
说明:代码使用了OpenCV和gdal函数包,gdal用来读取.tif文件unit16图片,OpenCV用来重新生成unit8图片
import os
import gdal
from cv2 import cv2
import numpy as np
import sys
#拉伸图像 #图片的16位转8位
def uint16to8(bands, lower_percent=0.001, higher_percent=99.999): out = np.zeros_like(bands,dtype = np.uint8)n = bands.shape[0] for i in range(n): a = 0 # np.min(band) b = 255 # np.max(band) c = np.percentile(bands[i, :, :], lower_percent) d = np.percentile(bands[i, :, :], higher_percent) t = a + (bands[i, :, :] - c) * (b - a) / (d - c) t[t<a] = at[t>b] = bout[i, :, :] = t return out path = sys.path[0] #获取当前代码路径
tif_list = [x for x in os.listdir(path) if x.endswith(".tif")]
for num, i in enumerate(tif_list):print(path+'\\'+i)dataset = gdal.Open(path+'\\'+i)width = dataset.RasterXSize # 获取数据宽度height = dataset.RasterYSize # 获取数据高度outbandsize = dataset.RasterCount # 获取数据波段数im_geotrans = dataset.GetGeoTransform() # 获取仿射矩阵信息im_proj = dataset.GetProjection() # 获取投影信息datatype = dataset.GetRasterBand(1).DataTypeim_data = dataset.ReadAsArray() #获取数据 # print(im_data.shape)img3 = uint16to8(im_data)img2 = img3[0:3,:,:]img2 = np.transpose(img2,(1,2,0))out = img2[:,:,::-1] #rgb->bgrcv2.imwrite(path+'\\'+i, out)print(num)
图像处理:图片像素深度unit16位转unit8位相关推荐
- 图像深度、像素深度和位深度
图像深度.像素深度和位深度 图像深度 像素深度 位深 区别 小结 图像深度 数字化图像的每个像素是用一组二进制数进行描述,像素的色彩由RGB通道决定,其中包含表示图像颜色的位数称为图像深度.如灰度图像 ...
- 图片像素、尺寸、位深度、图像色深
1.概念解释 图像像素:图像的分辨力,也就是图像的宽和高分别有多少个像素. 图像尺度(图像的输出尺寸):图像的物理单位,比如宽和高是多少英寸或者厘米. 位深度:存储图片一个像素需要消耗多少个bit位. ...
- 修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位
修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位 文章目录 修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位 修改开机LOGO图片教 ...
- Android如何把图片转为深度为32位格式为.bmp的图片
前几天公司的产品要求做个手机拍的照片转深度为32位,格式为.bmp格式的图片,仔细研究了下,通过调系统相机根据照片存的路径以及FileInputStream获得照片的bitmap,拿到这个bitmap ...
- 实验二(1)——8bit像素深度bmp图片与24bit像素深度bmp图片互转2021-03-20
一.实验要求 编写8bit像素深度bmp图片与24bit像素深度bmp图片互相转换的程序,将给定的8bitbmp图片和24bitbmp图片分别转换为24bitbmp图片和8bitbmp图片,其中24b ...
- Android PNG图片像素检测及剪裁优化
PNG图片是当前移动终端最主流的图片格式之一,由于android中大部分图片颜色数比较小而且尺寸也不大,所以在各类app软件中PNG图片几乎是首选的图片格式.在手Q中PNG图片大概有四五千张.如此众多 ...
- 一文搞懂图片像素、图片大小、图片存储类型等概念和计算
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.计算机存储的底层知识 二.图片 1.图片像素 2.图片存储类型(图片深度) 总结 前言 学习计算机视觉两年多了,发 ...
- 【python】查看图像位深度,以及改变图像位深度的简单小结
every blog every motto: Just live your life cause we don't live twice. 0. 前言 关于图像位深度,色深的小结 说明: 有不对的地 ...
- 【深度学习】入门深度学习,看三位顶级大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton的综述
[编者按]深度学习领域的三位大牛Yann LeCun.Yoshua Bengio和Geoffrey Hinton无人不知无人不晓.此前,为纪念人工智能提出60周年,Yann LeCun.Yoshua ...
最新文章
- asp.net mysql 创建变_[ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型...
- git设置单个仓库用户名以及密码
- C#线程安全的那些事
- lora终端连接云服务器_终端连接服务器主机
- 1189C. Candies
- 【转载】单片机应用系统断电时的数据保护方法
- 信息学奥赛一本通 1102:与指定数字相同的数的个数 | OpenJudge NOI 1.6 01
- 创建ros的程序包--3
- 修改element ui的table的某一列的样式
- AXURE母版事件(Raised-events)
- 遗传算法原理与matlab,有关路径优化遗传算法原理(结合matlab代码)
- qt中使用日志系统,自定义日志彩色输出,qt日志写入文件,自定义qt日志格式,同时提供Qt日志重定向功能(将qDebug信息输出到界面控件)
- 请你帮我一起转到全中国
- wps连接mysql odbc_如何在WPS中使用ADO连接数据库?
- 功能连接分析方法及其解释缺陷的综述
- MAC系统免驱显卡汇总
- 飞步科技 x 焱融 YRCloudFile:大幅提升训练效率,开启智驾新纪元
- 搭建服务器 运用阿里云DNS自己实现DDNS
- vscode 一键生成vue代码
- 过年为什么要贴门神?
热门文章
- [C++] memset函数用法理解
- 2018计算机保研夏令营情况介绍(清华,人大,北航,中科院计算所,中科院软件所,南大)
- 计算机无法识别加密u盘,bitlocker不能加密u盘安全模式
- 计算机软件测试方法及应用实践论文,刍议计算机软件测试方法及应用实践原稿(全文完整版)...
- 最强白嫖指南:免费高质量PPT宝藏网站,你居然还不知道?!
- 匿名函数的表达式可以有多个吗python_匿字的意思、匿的繁体字、匿的笔顺笔画、匿字部首和繁体字匿的意思...
- android 免root冻结,应用冻结器免root下载-应用冻结器 安卓版v0.10-pc6手机下载
- [无线] 让Android支持cmwap上网
- unity死循环,无限内存增长的调试方法
- 冲出好咖啡前,关键是先了解萃取