python中input数组_python-numpy.interp和掩码数组
我正在使用一个numpy蒙版数组来执行一些图像处理.设置了遮罩可处理围绕图像的NoData像素(必要边界,因为这些是地图投影图像,其原点位于无数据像素中).
使用以下代码块,我可以对图像执行高斯拉伸.
def gaussian_stretch(input_array, array_mean, array_standard_deviation, number_of_bins, n):
shape = input_array.shape
input_array = input_array.flatten()
#define a gaussian distribution, get binned GDF histogram
array_standard_deviation *= n
gdf = numpy.random.normal(array_mean, array_standard_deviation, 10000)
hist, bins = numpy.histogram(gdf, number_of_bins, normed=True)
cdf = hist.cumsum()
cdf = 256 * cdf / cdf[-1]
#interpolate and reshape
input_array = numpy.interp(input_array,bins[:-1],cdf)
input_array = input_array.reshape(shape)
return input_array
如果图像不包含NoData边框,则拉伸将按预期进行.在带有遮罩的图像上,遮罩将被忽略.这是预期的行为吗?关于如何仅处理未屏蔽数据的任何想法?
我尝试使用input_array.compressed(),但这将返回仅包含未屏蔽值的一维数组.如预期的那样,由于数组之间的大小差异,使用numpy.interp失败.
最后,我了解到使用numpy.random.normal并不总是会返回理想的高斯分布,并且一旦算法的其余部分起作用,我将添加一些误差约束.
解决方法:
您可以先获取input_array的掩码,并将其应用于结果数组,然后使用scipy.stats.norm计算正态分布的cdf,也可以使用scipy.special.erf()通过使用cdf公式计算cdf正态分布:
import scipy.stats as stats
def gaussian_stretch2(input_array, array_mean, array_standard_deviation, n):
mask = input_array.mask
n = stats.norm(array_mean, array_standard_deviation*n)
return numpy.ma.array(n.cdf(input_array), mask=mask)
标签:image-processing,arrays,python,numpy
来源: https://codeday.me/bug/20191208/2088753.html
python中input数组_python-numpy.interp和掩码数组相关推荐
- python一维数组和二维数组_Python numpy实现二维数组和一维数组拼接的方法
Python numpy实现二维数组和一维数组拼接的方法 撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape ...
- python中grid函数_Python / NumPy中meshgrid的目的是什么?
实际上文档中已经提到了np.mgrid的目的: np.mgrid 从坐标向量返回坐标矩阵. 在给定一维坐标数组x1,x2,...,xn的情况下,为N-D网格上的N-D标量/矢量场的矢量化评估制作N-D ...
- python中reshape函数_Python numpy.reshape函数方法的使用
numpy.reshape numpy.reshape(a, newshape, order='C') [source] 在不更改数据的情况下为数组赋予新的shape.参数 :a :array_ ...
- python中full函数_Python numpy.full_like函数方法的使用
numpy.full_like numpy.full_like(a, fill_value, dtype=None, order='K', subok=True)[source] 返回与给定数组具有相 ...
- python中squeeze函数_Python numpy.squeeze()用法及代码示例
当我们要从数组形状中删除一维条目时,将使用numpy.squeeze()函数. 用法: numpy.squeeze(arr, axis=None ) 参数: arr :[数组]输入数组. axis : ...
- python中argmin函数_Python numpy.argmin()用法及代码示例
numpy.argmin(array,axis = None,out = None):返回特定轴上数组min元素的索引. 参数: array:Input array to work on axis : ...
- python中isin函数_Python numpy.isin函数方法的使用
numpy.isin numpy.isin(element, test_elements, assume_unique=False, invert=False) [source] 计算test ...
- python中mat函数_Python Numpy中的Matlab cell2mat函数?
从某种意义上说,Python的"cells"比MATLAB-list长得多.python列表是1d单元格(或者更确切地说,大小为1维的单元格)的直接替代品.二维单元格可以表示为嵌套 ...
- python 中arange函数_Python numpy.arange函数方法的使用
numpy.arange numpy.arange([start, ]stop, [step, ]dtype=None) 返回给定间隔内的均匀间隔的值. 在半开间隔[start,stop)(换句话说, ...
- python中input()函数的返回是什么类型_Python中input函数的用法是什么?
"input()"函数是输入函数,用于接受一个标准输入数据,且返回string类型.在Python3中,去除了"raw_input()"函数,仅保留了" ...
最新文章
- Java基础笔记12
- 【数字信号处理】线性时不变系统 LTI ( 判断某个系统是否是 “ 非时变 “ 系统 | 案例三 )
- 思考并实现以下程序功能:实现一个抢红包的程序 java
- ITK:两个图像的全局配准(BSpline)
- 【ARM】Tiny4412裸板编程之Chip ID
- JetBrains CLion C++ IDE连接wsl2(Ubuntu)时,报错“Unable to establish SSL connection“解决方案
- Flutter开发系列教程
- 周边pd是什么意思_肿瘤百问百答(六)关于胃癌的PD-1抗体治疗,你应该知道些什么?...
- [转载] java 中 date类型详解
- eclipse 远程链接访问hadoop 集群日志信息没有输出的问题l
- 8 下半部和推后执行的工作
- 超感光徕卡电影四摄:华为Mate30系列国内开售
- 供应链三道防线(读书笔记)3(共4)
- 开源和互联网是天生的一对好基友
- 快速指数运算:平方-乘算法
- 什么是Express框架
- Unity中下载图片、音频和视频
- MISC:压缩包取证(zip爆破、明文攻击、伪加密、CRC32碰撞)
- c++ QT 反走样
- CentOS7.9安装教程,以及出现dracut- initqueue timeout-starting…starting timeout scripts 解决办法,linux配置静态IP地址
热门文章
- python界面编程实例_python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例...
- python编程可以自学么-怎么能学习好python编程?有自学的方法吗?
- python从入门到精通pdf百度云-跟老齐学Python:从入门到精通 完整版PDF[7MB]
- 化学人学python有前途吗-用Python解析化学公式
- android语音识别
- 谷歌云端语音识别软件
- qq纯黑主题怎么设置_qq背景变黑色,怎么调过来
- python用户画像_新闻个性化推荐系统源码之构建离线用户和文章特征
- dio设置自定义post请求_Flutter中的http网络请求
- cvpr2020 人脸检测与识别_CVPR2020 论文分类下载 「人脸识别+目标检测」