c++gdal如何在大图像中截取小图像并获取其图像信息_提取图像的颜色、纹理特征(传统算法)...

cc30cfe71ad818b59dd23cd4beb12c30.png

Python-Image-feature-extraction

Python实现提取图像的纹理、颜色特征,包含快速灰度共现矩阵(GLCM)、LBP特征、颜色矩、颜色直方图。

1044197988/Python-Image-feature-extraction​github.com
40b9252cc1aeab9a568ebd916ccf2bb8.png

原始图片

这里拿高光谱影像图片作为示例,图片大小为512*512。

deaabfcfc888e722d02f0a48e399929d.png
原始图片

一、纹理特征

1、GLCM

灰度共生矩阵法(GLCM, Gray-level co-occurrence matrix),就是通过计算灰度图像得到它的共生矩阵,然后透过计算该共生矩阵得到矩阵的部分特征值,来分别代表图像的某些纹理特征(纹理的定义仍是难点)。灰度共生矩阵能反映图像灰度关于方向、相邻间隔、变化幅度等综合信息,它是分析图像的局部模式和它们排列规则的基础。

numpy的快速灰度共现矩阵(GLCM)。

import fast_glcm
from skimage import data

if __name__ == '__main__':
    img = data.camera()
    glcm_mean = fast_glcm.fast_glcm_mean(img)

52704eb70f1964ae131a687b9e751801.png

以上图片标题代表的含义:

(1)均值(Mean)

(2)标准差(Std)

(3)对比度(Contrast)

对比度反应了图像的清晰度和纹理的沟纹深浅。度量矩阵的值是如何分布和图像中局部变化的多少,反应了图像的清晰度和纹理的沟纹深浅。纹理的沟纹越深,反差越大,效果清晰;反之,对比值小,则沟纹浅,效果模糊。
反应某像素值及其领域像素值亮度的对比情况,图像亮度值变化快,换句话说纹理较深,它的对比度就越大,也就是它的纹理越清晰。

(4)相异性(Dissimilarity)

计算对比度时,权重随矩阵元素与对角线的距离以指数方式增长,如果改为线性增长,则得到相异性。

(5)同质性/逆差距(Homogeneity)

测量图像的局部均匀性,非均匀图像的值较低,均匀图像的值较高。与对比度或相异性相反,同质性的权重随着元素值与对角线的距离而减小,其减小方式是指数形式的。

(6) 角二阶矩 / 能量( ASM)

灰度共生矩阵( grey level co-occurrence matrix,GLCM)用来描述图像灰度分布的均匀程度和纹理的粗细程度。
如果 GLCM 的所有值都非常接近,则 ASM 值较小; 如果矩阵元素取值差别较大,则 ASM 值较大。当 ASM 值较大时,纹理粗,能量大; 反之,当 ASM 值小时,纹理细,能量小。

(7)能量(Energy)

是灰度共生矩阵各元素值的平方和,是对图像纹理的灰度变化稳定程度的度量,反应了图像灰度分布均匀程度和纹理粗细度。能量值大表明当前纹理是一种规则变化较为稳定的纹理。更高的值==纹理均匀性。

(8)熵(Entropy)

测量图像纹理的随机性(强度分布)。熵是图像包含信息量的随机性度量,表现了图像的复杂程度。当共生矩阵中所有值均相等或者像素值表现出最大的随机性时,熵最大;因此熵值表明了图像灰度分布的复杂程度,熵值越大,图像越复杂。
表示矩阵中元素的分散程度,也表示图像纹理的复杂程度。

(9)最大概率(Maximum probability)

表示图像中出现次数最多的纹理特征。

2、LBP

LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子,具有多分辨率、灰度尺度不变、旋转不变等特性。主要用于特征提取中的纹理提取。

获取图像的LBP特征:对图像的原始LBP模式、等价LBP模式、旋转不变LBP模式,以及等价旋转不变LBP模式的LBP特征进行提取以及显示。
get_LBP_from_Image.py 主要文件 获取图像的LBP特征。
get_resolve_map.py和get_uniform_map.py主要是做降维后新的像素值的映射。已经将求出的结果写入了get_LBP_from_Image.py中,这两个主要是帮助理解算法降维后新的像素值怎么得到的。

427a4547f2ff5c463a971be7c0b0afd6.png
LBP

二、颜色特征

1、颜色矩

颜色是彩色图像最重要的内容之一,被广泛用于图像检索中。但从图像中提取颜色特征时,很多算法都先要对图像进行量化处理。量化处理容易导致误检,并且产生的图像特征维数较高,不利于检索。AMA Stricker和M Orengo提出了颜色矩的方法,颜色矩是一种简单有效的颜色特征表示方法,有一阶矩(均值,mean)、二阶矩(方差, variance)和三阶矩(斜度,skewness)等,由于颜色信息主要分布于低阶矩中,所以用一阶矩,二阶矩和三阶矩足以表达图像的颜色分布,颜色矩已证明可有效地表示图像中的颜色分布,该方法的优点在于:不需要颜色空间量化,特征向量维数低;但实验发现该方法的检索效率比较低,因而在实际应用中往往用来过滤图像以缩小检索范围。

2、颜色直方图

颜色直方图是在许多图像检索系统中被广泛采用的颜色特征。它所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。颜色直方图特别适于描述那些难以进行自动分割的图像。

细分:

颜色直方图可以是基于不同的颜色空间和坐标系。最常用的颜色空间是RGB颜色空间,原因在于大部分的数字图像都是用这种颜色空间表达的。然而,RGB空间结构并不符合人们对颜色相似性的主观判断。因此,有人提出了基于HSV空间、Luv空间和Lab空间的颜色直方图,因为它们更接近于人们对颜色的主观认识。其中HSV空间是直方图最常用的颜色空间。它的三个分量分别代表色彩(Hue)、饱和度(Saturation)和值(Value)。

ce77b87fd0cdb525e4780a4822879137.png

baf019c105b112accb7045b93a3347f0.png

d1b2763a7a4b74740e606edcc496af36.png

参考文献:

https://blog.csdn.net/lovebyz/article/details/84032927​blog.csdn.net
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在大图像截取图像获取图像信息,可以使用GDAL库来实现。GDAL是一个开源的地理信息系统库,可以处理各种栅格数据格式。 下面是一个使用GDAL库来截取图像获取图像信息的示例代码: ```c++ #include "gdal_priv.h" #include <iostream> int main() { GDALAllRegister(); // 打开大图像 GDALDataset *poDataset = (GDALDataset*) GDALOpen("big_image.tif", GA_ReadOnly); if (poDataset == NULL) { std::cout << "Cannot open big image file!" << std::endl; return -1; } // 定义小图像的位置和大小 int x = 1000; // 小图像左上角x坐标 int y = 1000; // 小图像左上角y坐标 int width = 500; // 小图像宽度 int height = 500; // 小图像高度 // 创建小图像的数据集 GDALDataset *poSmallDataset = poDataset->CreateCopy("small_image.tif", x, y, width, height, NULL); if (poSmallDataset == NULL) { std::cout << "Cannot create small image file!" << std::endl; GDALClose(poDataset); return -1; } // 获取图像的元数据 double adfGeoTransform[6]; poSmallDataset->GetGeoTransform(adfGeoTransform); std::cout << "Small image origin X: " << adfGeoTransform[0] << std::endl; std::cout << "Small image origin Y: " << adfGeoTransform[3] << std::endl; std::cout << "Small image pixel width: " << adfGeoTransform[1] << std::endl; std::cout << "Small image pixel height: " << adfGeoTransform[5] << std::endl; // 关闭数据集 GDALClose(poSmallDataset); GDALClose(poDataset); return 0; } ``` 在这个示例代码,我们首先打开了大图像,然后定义了小图像的位置和大小。接着我们创建了小图像的数据集,并获取了小图像的元数据,包括原点坐标和像素大小。 需要注意的是,这个示例代码仅仅是截取了小图像,并获取了其元数据,如果需要进行更复杂的图像处理,还需要使用其他的图像处理库和算法来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值