大数跨境
0
0

Java计算共生矩阵 |遥感图形共生矩阵的计算原理分析

Java计算共生矩阵 |遥感图形共生矩阵的计算原理分析 GIS前沿
2022-01-18
0


值组合,可以得到不同情况下的联合概率矩阵。(a,b) 取值要根据纹理周期分布的特性来选择,对于较细的纹理,选取(1,0)、(1,1)、(2,0灰度共生矩阵是对图像上保持某距离的两象素分别具有某灰度的状况进行统计得到的。


取图像(N×N)中任意一点(x,y)及偏离它的另一点(x+a,y+b),设该点对的灰度值为(g1,g2)。令点(x,y)在整个画面上移动,则会得到各种(g1,g2)值。设灰度值的级数为L,则(g1,g2)的组合共有k(k=L*L)种。对于整个画面,统计出每一种(g1,g2)值出现的次数,然后排列成一个方阵,再用(g1,g2)出现的总次数将它们归一化为出现的概率P(g1,g2),这样的方阵称为灰度共生矩阵。距离差分值(a,b)取不同的数)等小的差分值。


当a=1,b=0时,像素对是水平的,即0度扫描;当a=0,b=1 时,像素对是垂直的,即90度扫描;当a=1,b=1时,像素对是右对角线的,即45度扫描;当a=-1,b=-1时,像素对是左对角线,即135度扫描。


这样,两个像素灰度级同时发生的概率,就将(x,y)的空间坐标转化为“灰度对” (g1,g2)的描述,形成了灰度共生矩阵。


共生矩阵用两个位置的像素的联合概率密度来定义,它不仅反映亮度的分布特性,也反映具有同样亮度或接近亮度的象素之间的位置分布特性。


接下来就跟着小编一起看看这个共生矩阵怎么用编程语言Java实现吧。


(1)将X*Y的二维矩阵存入二维数组中(X和Y都是键盘输入的整数),为了方便,我们使用了随机数作为二维矩阵的元素,但是要控制元素的极值范围哦,小编这里设计的元素范围是0-29。



(2)随后根据经典的冒泡排序法对之前随机生成的数组进行大小排序,求出最大值和最小值之后根据(Max-Min+1)/m=n作为划分间隔(m为输入的要将原先灰度级划分几类的整数(降维))对原始矩阵进行划分间隔,比如输入3就将所有的元素按照大小间隔划分为3类,每一个类里面的所有元素均用同一数字0/1/2代替。由于设置的极值范围为0-29,为此小编划分为6大类,如下图所示:




(3)根据划分间隔计算并且将计算结果保存到另外一个二维数组当中去。接下来新建4个数组用来保存共生矩阵,原则上可以设置X*Y个共生矩阵,但是本次只拿最经典的4个作为例子来进行说明。




运行结果展示:



- END -


java实现读取遥感影像特征值
基于Java的空间滤波代码实现
Al助推卫星遥感步入“智能”时代
免费遥感数据源的获取和处理
美遥感创企获准出售10厘米分辨率遥感影像

戳原文,更有料!
【声明】内容源于网络
0
0
GIS前沿
分享测绘地信资讯,交流行业软件技巧。
内容 4923
粉丝 0
GIS前沿 分享测绘地信资讯,交流行业软件技巧。
总阅读5.5k
粉丝0
内容4.9k