将图像转换为8位通道_imagej像素和毫米转换

将图像转换为8位通道_imagej像素和毫米转换一背景遥感图像一般像素深度比较高,基本的就是unit16了,但是如果想在OpenCV中正确使用,而且不丢失数据RGB三通道信息,就需要转为unit8才能进行其他分析。二分析unit16的图像最大值为216-1=65535,而OpenCV中的图像最大值为28-1=255,当大于255时会自动变为255,这样数据信息就丢失了。下面代码采用的方式是线性缩放,将0到65535的数值线性缩…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一 背景

遥感图像一般像素深度比较高,基本的就是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] = a
        t[t>b] = b
        out[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).DataType
    im_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->bgr
    cv2.imwrite(path+'\\'+i, out)
    print(num)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192504.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • countdowntimer的用法_offset counta函数

    countdowntimer的用法_offset counta函数CountDownTimer类介绍CountDownTimer类比较简单,总共就一个构造和4个方法。内部是通过handler实现CountDownTimer(longtime,longinterval):参数time是总时间,interval是间隔时间start():开始倒计时的方法cancel():取消倒计时的方法onTink(longtime):抽象方法,每个间隔时间

    2022年9月18日
    3
  • 超强物联网架构解读图_物联网的体系架构是什么

    超强物联网架构解读图_物联网的体系架构是什么oT科技物语的小伙伴们,我是ICE青,特别喜欢金庸大师作品的ICE青。因此,本期开始我将为大家介绍《物联网平台之独孤九剑》,看万物互联的世界何以笑傲江湖——「总决式」:物联网概述和架构「破剑式」:OceanConnect物联网平台概述「破刀式」:OceanConnect物联网特性概述「破枪式」:业务流程「破鞭式」:北向API「破索式」:南向Profile「破掌式」:…

    2022年9月17日
    5
  • docker启动mysql镜像命令_ubuntu20修改ip命令

    docker启动mysql镜像命令_ubuntu20修改ip命令1、拷贝mysql离线包1.1、将mysql-57.gz安装文件拷贝到linux2、安装mysql2.1、进入mysql安装包目录2.2、加载mysql镜像dockerload-imysql-57.gz2.3、查看镜像dockerimages2.4、创建mysql容器启动mysql镜像,创建一个mysql容器dockerrun-d–namemysql-p3307:3306-eMYSQL_ROOT_PASSWORD=1234569e64d176cd

    2022年9月25日
    3
  • java解析XML为对象「建议收藏」

    java解析XML为对象「建议收藏」详解Java解析XML的四种方法http://developer.51cto.com 2009-03-3113:12 cnlw1985 javaeye 我要评论()XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法。
     
    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献

    2022年5月4日
    39
  • document cookie用法[通俗易懂]

    document cookie用法[通俗易懂]cookie概述曾经利用一个不变的框架来存储购物栏数据,而商品显示页面是不断变化的,尽管这样能达到一个模拟全局变量的功能,但并不严谨。例如在导航框架页面内右击,单击快捷菜单中的【刷新】命令,则所有的JavaScript变量都会丢失。因此,要实现严格的跨页面全局变量,这种方式是不行的,JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求。 cookie是浏

    2022年7月11日
    17
  • pyqt5 pycharm配置_pycharm安装pyqt5

    pyqt5 pycharm配置_pycharm安装pyqt5安装Python+PyCharm+PyQt51、安装Python访问官网https://www.python.org/,下载最新版本的Python来安装。我这里下了python3.92、安装PyCharm1)下载PyCharm,官网https://www.jetbrains.com/pycharm/download/#section=windows下载Community版本的2)汉化Pycharm:https://blog.csdn.net/qqwangfan…

    2022年8月27日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号