灰度共生矩阵VC++实现

合集下载

图像灰度化方法总结及其VC实现

图像灰度化方法总结及其VC实现

图像灰度化方法总结及其VC实现最近一段时间作者开始进行运动目标识别定位系统设计,本文以及后续的几篇文章都是从一个图像处理初学者的角度来总结目标检测定位过程中所应用到的各种常见的算法,尤其是解决算法实现过程中由于粗心大意或者C编程基本功不扎实所引起的各种问题。

本文主要对彩色图片灰度化的方法及其实现过程进行总结,最终给出实现的C代码。

在进行视频流目标识别与跟踪时,通常第一个步骤就是对采集到的彩色图像进行灰度化,这是因为黑白照片数据量小,相比彩照更易实现实时算法,另一方面黑白照片是由未处理的光线所形成的照片,因此从图像处理学角度来看,这种未经特殊滤光处理的图片所涵盖的信息更有价值。

目前,在图像处理过程中,最常用的彩色图片格式有RGB,HSV、YUV以及HLS三种。

以下分别对这三种格式的彩色图像进行灰度化实现。

1、RGB空间图像定义于RGB空间的彩色图,其每个像素点的色彩由R、G、B三个分量共同决定。

每个分量在内存所占的位数共同决定了图像深度,即每个像素点所占的字节数。

以常见的24深度彩色RGB图来说,其三个分量各占1个字节,这样每个分量可以取值为0~255,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。

对这样一幅彩色图来说,其对应的灰度图则是只有8位的图像深度(可认为它是RGB三个分量相等),这也说明了灰度图图像处理所需的计算量确实要少。

不过需要注意的是,虽然丢失了一些颜色等级,但是从整幅图像的整体和局部的色彩以及亮度等级分布特征来看,灰度图描述与彩色图的描述是一致的。

对于RGB图像进行灰度化,通俗点说就是对图像的RGB三个分量进行加权平均得到最终的灰度值。

最常见的加权方法如下:1)Gray=B;Gray=G;Gray=R2)Gray=max(B+G+R)3)Gray=(B+G+R)/34)Gray= 0.072169B+ 0.715160G+ 0.212671R5)Gray= 0.11B+ 0.59G+ 0.3R这三种方法中,第一种为分量法,即用RGB三个分量的某一个分量作为该点的灰度值;第二种方法为最大值法,将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。

opencvpython灰度共生矩阵纹理特征

opencvpython灰度共生矩阵纹理特征

灰度共生矩阵(GLCM)是一种常用的纹理特征提取方法,特别是在图像处理和计算机视觉领域。

它通过统计图像中像素对的灰度级信息来描述纹理特性。

在OpenCV的Python实现中,可以通过如下步骤来实现:1. 首先,你需要将彩色图像转化为灰度图像,可以使用`cv2.cvtColor()`函数。

2. 然后,你需要定义一个距离和角度参数。

这些参数将用于在图像中移动像素对。

3. 接下来,你需要定义一个函数来计算灰度共生矩阵。

这个函数将遍历图像中的所有像素对,并使用灰度共生矩阵的公式来计算每个像素对的灰度级信息。

4. 最后,你可以使用这个灰度共生矩阵来提取图像的纹理特征。

这些特征可能包括对比度、相关性、能量和熵等。

下面是一个简单的示例代码:```pythonimport cv2import numpy as np# 读取图像image = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)# 定义距离和角度参数distance = 1angle = np.pi/4# 定义灰度共生矩阵函数def calculate_glcm(image, distance, angle):width, height = image.shapeglcm = np.zeros((256, 256))for x in range(0, width-distance):for y in range(0, height-distance):i = image[x][y]j = image[x+distance][y+distance]glcm[i][j] += 1return glcm/np.sum(glcm)# 计算灰度共生矩阵glcm = calculate_glcm(image, distance, angle)# 提取纹理特征contrast = np.sum(glcm[0:8, 0:8]) # 对比度特征correlation = np.sum(glcm*np.outer(np.arange(256), np.arange(256))) # 相关性特征energy = np.sum(glcm**2) # 能量特征entropy = -np.sum(glcm*np.log2(glcm+1e-10)) # 熵特征```请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体需求进行修改和优化。

基于灰度共生矩阵(GLCM)的图像纹理分析与提取

基于灰度共生矩阵(GLCM)的图像纹理分析与提取

基于灰度共生矩阵(GLCM)的图像纹理分析与提取重磅干货,第一时间送达灰度共生矩阵灰度共生矩阵(Gray Level CO-Occurrence Matrix-GLCM)是图像特征分析与提取的重要方法之一,在纹理分析、特征分类、图像质量评价灯方面都有很重要的应用,其基本原理图示如下:左侧是一个图像,可以看出最小的灰度级别是1,最大的灰度级别是8,共有8个灰度级别。

右侧对应的灰度共生矩阵,左上角第一行与第一列的坐标(1, 1)包含值1,原因在于水平方向上,相距一个像素值,当前像素跟水平右侧相邻像素只有一个是1、1相邻的像素值(灰度级别)对;右侧共生矩阵的原始(1, 2) = 2 说明在像素矩阵中有两个像素值1,2相邻的像素点对、以此类推得到完整的右侧灰度共生矩阵。

根据当前像素跟相邻像素位置不同,可以计算得到不同的共生矩阵,同时根据像素之间的距离不同会输出不同灰度共生矩阵。

总结来说,有如下四种不同角度的灰度共生矩阵:•0度水平方向GLCM•45度方向GLCM•90度垂直方向GLCM•135度方向GLCM根据相邻像素点之间距离参数D不同可以得到不同距离的GLCM。

此外对正常的灰度图像来说,最小灰度值为0,最大的灰度值为255,共计256个灰度级别,所以GLCM的大小为256x256,但是我们可以对灰度级别进行降维操作,比如可以每8个灰度值表示一个level这样,这样原来256x256大小的共生矩阵就可以改成256/8 * 256 /8 = 32x32的共生矩阵。

所以最终影响灰度共生矩阵生成有三个关键参数:•角度 (支持0、45、90、135)•距离(大于等于1个像素单位)•灰度级别(最大GLCM=256 x 56)GLCM实现纹理特征计算灰度共生矩阵支持如下纹理特征计算,它们是:•能量•熵值•对比度•相关性•逆分差这些纹理特征计算公式如下:上述5个是常见的GLCM的纹理特征,GLCM总计由14个特征值输出,这里就不再赘述了!感兴趣的可以自己搜索关键字GLCM。

计算机视觉中的灰度共生矩阵算法研究

计算机视觉中的灰度共生矩阵算法研究

计算机视觉中的灰度共生矩阵算法研究随着计算机图像处理技术的不断发展,图像识别、分类和检测等任务在各种应用中都得到了广泛的应用。

在这些任务中,图像特征是一种非常重要的工具,特别是纹理特征。

因此,研究有效的纹理特征提取方法一直是计算机视觉领域的研究热点之一。

灰度共生矩阵算法是一种非常常用的纹理特征提取方法之一,它能够反映灰度级之间的空间关系。

灰度共生矩阵算法(Gabor)是一种基于图像的局部特征提取方法,通过计算灰度级之间的统计规律,可以有效地反映图像中的纹理信息。

灰度共生矩阵算法在图像分类、目标检测、人脸识别等领域应用广泛,同时它也是其他图像特征提取方法的基础。

灰度共生矩阵算法的核心思想是利用灰度级之间的空间关系来反映图像的纹理信息。

在灰度共生矩阵中,每一个像素与其邻居像素之间的灰度关系被用来表示纹理信息的某一个方面。

在计算灰度共生矩阵时,需要设置一定的距离和角度,来确定邻居像素之间的位置关系。

在一幅图像中,对于每一个像素,在其周围一定距离内的像素对于其灰度共生矩阵的计算是有影响的,因此这种方法可以有效地反映图像中的局部纹理特征。

灰度共生矩阵算法是一种很灵活的方法,可以根据需要对距离和角度进行调整以获取不同的纹理信息。

在灰度共生矩阵计算完成之后,可以通过计算不同的灰度共生矩阵参数来提取不同的纹理特征。

其中最常用的参数是对比度、能量、熵和相关度。

对比度反映了灰度共生矩阵中像素灰度级之间的变化程度,对于较细的纹理具有比较好的响应。

能量度量了灰度共生矩阵中像素出现概率的总和,对于较大的纹理具有比较好的响应。

熵可以表示灰度共生矩阵的不确定性或信息熵,对于纹理的复杂程度具有比较好的响应。

相关度用来描述灰度共生矩阵中像素间的相关性。

作为一种经典的纹理特征提取方法,灰度共生矩阵算法在图像处理领域有许多应用。

例如,在计算机视觉中,它可以用来进行目标检测、图像分类、人脸识别等任务。

另外,在医学图像处理等领域也可以使用灰度共生矩阵算法来提取纹理特征,从而识别图像中的组织结构和疾病等信息。

灰度共生矩阵法

灰度共生矩阵法

灰度共生矩阵法1. 引言灰度共生矩阵法是一种用于图像分析和纹理特征提取的方法。

它通过计算图像中灰度级相邻像素之间的频次,用以描述图像的纹理特征。

本文将详细介绍灰度共生矩阵的原理、计算过程和应用领域。

2. 灰度共生矩阵的原理2.1 灰度共生矩阵介绍灰度共生矩阵(gray-level co-occurrence matrix,GLCM),又称共生矩阵或共生矩阵,是一种用于计算图像纹理特征的统计工具。

它描述了图像中相邻像素之间的灰度级关系,可以用来表征图像的纹理信息。

2.2 灰度共生矩阵的计算灰度共生矩阵的计算分为以下几个步骤: 1. 将原始图像转换为灰度图像。

2. 根据设定的像素间距(pixel distance)和方向(angle)参数,计算图像中每对相邻像素的灰度级对。

3. 统计每对灰度级对出现的频次,构建灰度共生矩阵。

3. 灰度共生矩阵的计算过程3.1 图像灰度化将彩色图像转换为灰度图像的常用方法有取平均灰度法、加权平均法和仅取一个分量法等。

选择合适的灰度化方法可以提取出图像中的纹理信息。

3.2 灰度共生矩阵的定义灰度共生矩阵是一个正方形矩阵,其大小为灰度级的个数。

矩阵的每个元素表示了某一对灰度级在特定方向上出现的频次。

3.3 灰度共生矩阵的计算对于给定的图像和参数,可以通过遍历图像的所有像素,并统计每对相邻像素的灰度级对出现的频次来计算灰度共生矩阵。

4. 灰度共生矩阵的应用领域4.1 纹理特征提取灰度共生矩阵能够提取图像的纹理特征,例如对比度、能量、协方差等。

这些特征可以用于图像分类、图像识别和图像检索等任务中。

4.2 图像分割灰度共生矩阵可以通过分析图像中的纹理信息,用于图像分割。

基于纹理的图像分割算法可以通过提取纹理特征,将图像分成不同的区域,有助于提高图像分割的准确性和效果。

4.3 缺陷检测灰度共生矩阵在材料缺陷检测中也有广泛应用。

通过提取纹理特征,可以对材料表面的缺陷进行分析和检测,有助于提高材料质量的控制。

灰度共生矩阵法

灰度共生矩阵法

灰度共生矩阵法灰度共生矩阵法是一种常用的图像纹理特征分析方法,它通过统计图像中不同灰度值之间出现的空间关系来描述图像的纹理特征。

本文将从以下几个方面详细介绍灰度共生矩阵法。

一、灰度共生矩阵法的基本原理灰度共生矩阵法是一种基于灰度级别的统计方法,它通过计算同一图像区域内不同位置处两个像素之间的灰度值关系,得出各种方向上不同距离处两个像素之间某些特定关系的概率分布。

具体而言,对于给定的图像I(x,y),以及距离d和角度θ,可以定义一个二元组(x,y)和另一个二元组(x+d*cosθ,y+d*sinθ)之间的关系,通常称为共生对。

然后可以通过统计所有这些共生对在整个图像中出现的频率来生成一个称为灰度共生矩阵(GLCM)的矩阵。

二、灰度共生矩阵法的主要步骤1. 灰度化:将彩色图像转换为灰度图像。

2. 分块:将整幅图像分割成若干个小块,每个小块的大小可以根据实际需求来确定。

3. 计算灰度共生矩阵:对于每个小块,计算其灰度共生矩阵。

具体而言,对于每个像素点,统计它周围距离为d、方向为θ的所有像素点的灰度值,并将这些灰度值作为共生对出现的频率填入GLCM中。

4. 特征提取:从GLCM中提取出各种特征参数。

常用的特征参数包括能量、熵、对比度、相关性等。

5. 分类识别:将提取出来的特征参数输入到分类器中进行分类识别。

三、灰度共生矩阵法的常用特征参数1. 能量(Energy):能量是指GLCM中所有元素平方和的开方,它反映了图像纹理的粗细程度。

能量越大,表示图像纹理越粗糙。

2. 熵(Entropy):熵是指GLCM中所有元素对数之和的相反数,它反映了图像纹理的复杂程度。

熵越大,表示图像纹理越复杂。

3. 对比度(Contrast):对比度是指GLCM中元素值之差与元素位置之间距离的加权和,它反映了图像纹理的明暗程度。

对比度越大,表示图像纹理越明暗分明。

4. 相关性(Correlation):相关性是指GLCM中元素值之间的线性关系程度,它反映了图像纹理的方向性。

灰度共生矩阵纹理特征提取算法的优化与实现

灰度共生矩阵纹理特征提取算法的优化与实现
具有较大的 随机性 , 那么熵较大 。 熵 流水 图表明 , 每 个时钟周期 , 小窗提取阶段都 会空闲( 用白色方 反映 了图像 中纹理非均匀度或复杂程度。 纹理越复杂 , 熵值越大 。 框表示) , 而特征提取阶段空闲时间相对较短 , 只有共生矩 阵计算 阶 段一直处于活跃状态 。 在这里我们假设共生矩阵计算阶段拥有延时 2共生矩阵算法的实现 与优化 为m, 那么执行整个 循环只需要( 3 1 十 3 1 + 3 ) m个时钟周期 , 而在非流 共生矩 阵所基于 的嵌入 式系统硬件 与软件 平台如 图2 所示 。 水操作 下则需要4 * 3 l * 3 1 * m个时钟周期 。 系统 由一块 电路 板构成 , 主要器件 包括F P G A+ DS P、 F l a s h、 每个循环在 结束前都 会迭代多次 , 迭代 的次数就是 循环 的计 S R AM、 L V DS 通信模块 、 配置芯片 等构成 。 数。 软件流水循环 的最小循环计数 由并行 执行 的迭 代次数决 定 , 当 基于此硬件系统 , 我们搭建了基于D S P / B I O S 的层次化设计结 D S P 不能确定循环次数时, 将默认产 生两个循环和一个控制逻辑 , 第 构体系的软件 平台 , 利用实时操作系统D S P / B I O S 实现各个软件任 个循环不是流水的 , 并且当运行时的循环计数小于最小循环 时执 务。 软 件编程环境 采用DS P / B I O S 和CC S 。 灰度 共生矩阵 图像 处理 行第一个循环 , 当运行时 的循环计数大于最小循环 计数时执行第二 系统的软件系统即是在D S P / B I O S 的基础上 , 通过编写底层驱动程 个循环 。 所 以, 对于任何一 次运 行 , 总有一个循环会被跳过 , 该循环 序、 任务管理模块 、 信息处理算法任务 的方式实现 的。 就 是 冗 余循 环 。 可 以 通 过设 置 一 p m— O3 或 者 使 用M U S T _ I T R RAT E 其 中输入 图像 的流程 图如 图3 所示 。 p r a g ma 伪指令 来令 编译 器不产生伪指令 , 从而改善循环 , 更好的实 图像存储在场景产生器 中, 将 所要 处理 的图像 经过L V D S  ̄输 现软 件流水 , 提高代码执行效率 。 到FPGA进行 图像 预处理 工 作 , 并将 预处 理后 的 图像 数据 存入 S P AM中 , 当D S P 收到一个来 自F P GA的中断后 , 通过 E MI F 接 口从 3 实验 结 果及 分 析 S R A M中获取 图像数据 , 并利用E D MA 通道将接收到的图像数据传 在C C S 2 . 2 平 台下 , 利用上述所示 的硬件仿真平 台, 对于 输入 图 送到L 2 存 储器进行灰度共生矩阵的运算 。 其中主要利用D S P 的流水 像进行灰度共生矩阵纹理特征提取运算 , 针对图8 ( 尺度4 9 6 * 4 9 6 ) , 选 并行性能 , 以及数据传输优化对算法实 现了加速 , 提高了系统的实 取窗 口大4 q6 , 共生矩 阵灰度级 1 6 , 步长大小 为1 。 利用上述 优化方 时性 , 具体优化实现如下 : 法, 对灰度共生矩 阵算法进行优化 实现。 2 . 1灰度 共 生 矩 阵数 据传 输 的优 化 首先 , 我们需要对优化后D S P 得出的特征提取结果与优化前在 在本 算法的设计 中 , 我们 选取了一张4 9 6 * 4 9 6 尺寸 图像 , 由于 D S P 上得到的结果进行 一个对 比, 来确认优化过程是否改变 了算法 D S P 的L 2 存储空 间有 限, 所 以F P G A 每次传递给D S P 的都 是小 窗 图 的精确度 , 我们取 了前五个小 窗 口得到的熵与二 阶距来进行对 比认 像, 这里我们设计了1 6 " 1 6 的小窗大小 , 这样就需要3 1 . 3 1 次传输才能 证 , 结果如表( 1 ) ( 2 ) 所示。 将整 幅图像数据传送完 , 如果 采用普通 的传输通道 , 必然会浪费更 从表1 , 2 可以看 出, 优化后的程序对灰度共生矩 阵算法的精确 多的 时间与系统资源 , 所 以在这里我们采用 了C 6 6 7 8 所特有E DMA 性没有影响 。 传输 通道 , 其结 构框 图如 图4 所示 : 接着, 针对上文中所提出的( 1 ) 软件 流水优化 和( 2 ) 数据传输通道 E D MA是D S P中用于实现数据快速交换的重要技术 , 具有独立 及带宽优化 , 可得 到程 序优化后所得到的 时间表如表( 3 ) : 由表( 3 ) 可知 , 对灰度共生矩阵的优化实现 , 使得之前从图像数 于C P U的后台批量数据传输 的能力。 大幅提高 了数据在存储器间的 . 0 1 ms 减少到了0 . 3 5 ms 。 使得计算 存储访 问传输速度 , 同时也使 C P U的高性能得到 了充分发挥 , 为图 据接收到图像处理完成的时间从2 其优化过 程主要体现在 : 像处理过程中大量数据 陕 速 传输奠定 了基础 , 对 图像处理的实时 陛 的效率得 到了很大的提高 , 尤为 关键。 ( 1 ) 多指令 并行执行 , ( 2 ) 程序的软件 流水化 , ( 3 ) 独立于 C P U的 图 本系统 , 当D S P 接收 到图像 中断时 , 会 同步触 发E D MA进行 图 像数据传 输。 像数据传 输。 通过利 用E D M A的p i n g — p o n g 传输方式实现 图像数据 通过以上三方面 的程序优化 , 大幅缩减 了灰度共生矩 阵图像处 采集 的实 时性 , 数据 传输高效且与C P U处理 图像数据 同时进行 , 很 理 时间, 满足嵌入 式实时图像处理的要求 。 好的提高了灰度共生矩阵数据传输 的速度 。 4 结语 2 . 2灰 度 共 生矩 阵的存 取 带 宽优 化 分析 了灰度共生 矩阵纹理特征原理 , 设计 了一种灰度共生矩阵 由图4 可知 , C 6 6 7 8 包含两个 寄存器组 , 两条并行 的数据通路 以 并研究 了T MS 3 2 0 C 6 6 7 8 E D MA的结 及L 1 , s 1 , M1 , D 1 , L 2 , s 2 , M2 , D 2 这 八个功能单元 , 为 了充分利用 实时 图像处理的嵌入式系统 , 构特点 , 采用软件平 台C C S 2 . 2 和, I ’ MS 3 2 0 C 6 6 7 8 的仿真 平台进 行优 D S P 的硬件资源 , 我们在编程上利用 了D S P 的两条数据通路及八个 化实现 , 实验结果表 明, 嵌入 式系统设 计能很好地提高灰度共生 矩 功能单元 , 使之 同时处理多个运算 。 满 足实时处理 要求 。 如果 还需 要 分析共生矩阵计算的原理 , 计算纹理特征时 , 寄存器每次只加 载 阵图像纹理特征提取算法 的效率 , 可 以将耗 时较长 的程 序在采用 汇编编 个浮点数会导致处理 缓慢 , 因此可 以使用两条并行的数据通路 同 更好 的缩 减图像处理 时间 , 写 , 从而使用汇编器进 行进 一步优化 。 时对矩阵的x, Y方 向进行编程运算 , 提高 了计算效率 , 如 图5 所示 。

纹理特征分析的灰度共生矩阵(GLCM)

纹理特征分析的灰度共生矩阵(GLCM)

纹理特征分析的灰度共生矩阵(GLCM)灰度共生矩阵(GLCM)是一种用于纹理特征分析的图像处理技术。

它广泛应用于各种领域,例如图像识别、图像分类、医学图像分析等。

GLCM通过统计图像中不同灰度级别的像素对出现的频次来描述图像的纹理特征。

GLCM是一个二维矩阵,它以图像中的像素值为输入,生成一个矩阵。

矩阵中的每个元素表示了两个像素具有一定距离(通常为1个像素)时,它们具有其中一种特定的灰度相对关系(如相等、相邻或对称等)的频次统计。

这个频次统计是通过扫描整个图像来进行计算的。

为了计算GLCM,我们需要遍历图像中的每个像素,对于每个像素,我们将与其距离为d的像素对应的GLCM矩阵元素+1、距离d是一个参数,用于确定计算GLCM时考虑的像素对的距离。

通常,我们将距离d设置为1,以考虑邻近像素之间的关系。

GLCM矩阵的大小与图像的灰度级数有关。

如果图像有N个灰度级别,则GLCM矩阵的大小为N×N。

矩阵中的每个元素(i,j)表示在图像中,像素值为i的像素和像素值为j的像素成对出现的频次。

这个频次可以用于计算一些统计特征,这些特征可以用来描述图像的纹理特征。

常用的灰度共生矩阵特征包括:1. 对比度(Contrast):对比度是通过计算矩阵中不同灰度级别像素对的频次差异来描述图像的纹理对比度。

2. 逆差矩(Inverse Difference Moment):逆差矩用于衡量图像的纹理细节程度,即描述图像中相邻不同灰度级别像素对的频次。

3. 相关度(Correlation):相关度用于衡量图像的纹理的线性依赖性,即描述图像中相邻像素的线性相关性。

4. 能量(Energy):能量用于衡量图像的纹理的均匀性,即描述图像中不同灰度级别像素对的频次的平方和。

5. 熵(Entropy):熵用于衡量图像的纹理的复杂性,即描述图像中不同灰度级别像素对的频次的信息熵。

这些特征可以用来描述图像的纹理特征,从而可以用于图像分类、识别等应用中。

cv2灰度共生矩阵提取纹理特征向量

cv2灰度共生矩阵提取纹理特征向量

CV2灰度共生矩阵提取纹理特征向量1. 什么是灰度共生矩阵?灰度共生矩阵(Gray-Level Co-occurrence Matrix,GLCM)是用来描述图像纹理特征的一种统计方法。

它描述了图像中不同像素灰度级的空间关系和频率分布,可以用来提取图像的纹理特征。

2. GLCM的计算过程GLCM的计算过程包括: - 首先选择一个特定的偏移量和特定的方向,用来确定像素对的空间关系。

- 然后遍历整个图像,对于每个像素点,与其偏移量确定的相邻像素进行比较,计算它们之间的灰度级对出现的频率。

- 最终得到一个关于灰度级对出现频率的矩阵,即灰度共生矩阵。

3. 灰度共生矩阵的特征灰度共生矩阵提供了丰富的图像纹理信息,可以从中提取多种特征: - 对比度(Contrast):描述了图像中不同灰度级对之间的对比程度。

- 相关性(Correlation):描述了图像中不同灰度级对之间的线性相关程度。

- 能量(Energy):描述了图像中灰度级对出现的频率。

- Homogeneity:描述了图像中灰度级对在空间上的均匀程度。

4. GLCM在图像处理中的应用灰度共生矩阵提取的纹理特征向量可以应用于图像分类、目标识别、医学图像分析等领域。

通过提取图像的纹理特征,可以更准确地描述图像的特性,从而改善图像处理和分析的效果。

5. 个人观点和理解灰度共生矩阵提取纹理特征向量是图像处理中非常重要的一部分。

它不仅可以描述图像的纹理特征,还可以应用于图像识别和分类等领域,为图像处理技术的发展提供了重要的支持。

总结通过灰度共生矩阵提取纹理特征向量,我们可以更好地理解图像的纹理特征,从而在图像处理和分析中取得更好的效果。

在未来的发展中,灰度共生矩阵技术将会得到更广泛的应用,为图像处理领域带来更多的创新。

希望通过本文的介绍,您能对CV2灰度共生矩阵提取纹理特征向量有一个更加深入的理解。

以上是我撰写的关于CV2灰度共生矩阵提取纹理特征向量的文章,希望对您有所帮助。

灰度共生矩阵

灰度共生矩阵

灰度共生矩阵(GLCM)共生矩阵用两个位置的象素的联合概率密度来定义,它不仅反映亮度的分布特性,也反映具有同样亮度或接近亮度的象素之间的位置分布特性,是有关图象亮度变化的二阶统计特征。

它是定义一组纹理特征的基础。

一幅图象的灰度共生矩阵能反映出图象灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图象的局部模式和它们排列规则的基础。

设f(x,y)为一幅二维数字图象,其大小为M× N ,灰度级别为Ng,则满足一定空间关系的灰度共生矩阵为P(i,j)=# {(x1,y1),(x2,y2) ∈M×N ∣ f(x1,y1)=i,f(x2,y2)=j }其中#(x)表示集合X中的元素个数,显然P为Ng×Ng的矩阵,若(x1,y1)与(x2,y2)间距离为d,两者与坐标横轴的夹角为θ,则可以得到各种间距及角度的灰度共生矩阵P(i,j,d,。

)纹理特征提取的一种有效方法是以灰度级的空间相关矩阵即共生矩阵为基础的,因为图像中相距(ΔχΔy的两个灰度像素同时出现的联合频率分布可以用灰度共生矩阵来表示。

若将图像的灰度级定为N级,那么共生矩阵为NXN矩阵,可表示为M(∆X' Δy)(h,k),其中位于(h,k)的元素mhk的值表示一个灰度为h而另一个灰度为k的两个相距为(ΔχΔy的像素对出现的次数。

对粗纹理的区域,其灰度共生矩阵的mhk值较集中于主对角线附近。

因为对于粗纹理,像素对趋于具有相同的灰度。

而对于细纹理的区域,其灰度共生矩阵中的mhk值则散布在各处。

为了能更直观地以共生矩阵描述纹理状况,从共生矩阵导出一些反映矩阵状况的参数,典型的有以下几种:(1)能量:是灰度共生矩阵元素值的平方和,所以也称能量,反映了图像灰度分布均匀程度和纹理粗细度。

如果共生矩阵的所有值均相等,则ASM值小;相反,如果其中一些值大而其它值小,则ASM值大。

当共生矩阵中元素集中分布时,此时ASM值大。

ASM值大表明一种较均一和规则变化的纹理模式。

灰度共生矩阵

灰度共生矩阵

1 引言图像识别是随计算机的发展而兴起的一门学科,现已渗透各个领域。

如生物学中的色体特性研究;天文学中的望远镜图像分析;医学中的心电图分析、脑电图分析、医学图像分析;军事领域中的航空摄像分析、雷达和声纳信号检测和分类、自动目标识别等等。

当前,对图像分类识别的常用方法是先提取图像特征,再进行特征值的归类。

图像特征包括几何特征、形状特征、颜色特征、纹理特征等等。

本文主要针对图像的纹理特征进行提取、分析,最后实现具有显著纹理特性的图像的分类识别。

2 图像的纹理特征纹理是景物的一个重要特征。

通常认为纹理是在图像上表现为灰度或颜色分布的某种规律性,这种规律性在不同类别的纹理中有其不同特点。

纹理大致可分为两类:一类是规则纹理,它由明确的纹理基本元素(简称纹理基元)经有规则排列而成,常被称为人工纹理。

另一类是准规则纹理,它们的纹理基元没有明确的形状,而是某种灰度或颜色的分布。

这种分布在空间位置上的反复出现形成纹理,这样的重复在局部范围内往往难以体察出来,只有从整体上才能显露。

这类纹理存在着局部不规则和整体规律性的特点,常被称为自然纹理。

纹理特征可用来描述对象物表面的粗糙程度和它的方向性,也可用来分析生物材料组织,或者用来进行图像分割。

纹理特征提取的方法随纹理类别的不同而不同,一般,规则纹理采用结构分析方法,准规则纹理采用统计分析方法。

3 灰度共生矩阵由于纹理是由灰度分布在空间位置上反复出现而形成的,因而在图像空间中相隔某距离的两象素之间会存在一定的灰度关系,即图像中灰度的空间相关特性。

灰度共生矩阵就是一种通过研究灰度的空间相关特性来描述纹理的常用方法。

3.1 灰度共生矩阵生成灰度直方图是对图像上单个象素具有某个灰度进行统计的结果,而灰度共生矩阵是对图像上保持某距离的两象素分别具有某灰度的状况进行统计得到的。

取图像(N×N)中任意一点(x,y)及偏离它的另一点(x+a,y+b),设该点对的灰度值为(g1,g2)。

提取图像纹理特征——灰度共生矩阵

提取图像纹理特征——灰度共生矩阵

提取图像纹理特征——灰度共生矩阵摘要图像的特征提取是图像的识别和分类、基于内容的图像检索、图像数据挖掘等研究内容的基础性工作,其中图像的纹理特征对描述图像内容具有重要意义,纹理特征提取己成为目前图像领域研究的热点。

文中深入研究了基于灰度共生矩阵(GLCM)的纹理特征提取方法,给出了基于Matlab的简便实现代码,分析了共生矩阵各个构造参数对构造共生矩阵的影响。

分析结果对优化灰度共生矩阵的构造、实现基于灰度共生矩阵( GLCM)的特定图像的纹理特征提取等都具有重要参考意义。

本文分析了图像纹理的特征提取—灰度共生矩阵,是物体表而最本质的属性。

纹理特征提取是作为纹理分析的首要任务,纹理提出了用灰度共生矩阵的方法提取纹理特征,通过MA丁LAB仿真实现,结果由灰度共生矩阵产生的四个纹理特征能具有较好的鉴别能力。

关键词: 特征提取;灰度共生矩阵;纹理特征;Matlab目录1 设计目的 (1)2相关知识 (1)2.1 MATLAB简介 (1)2.2 MATLAB应用 (1)2.3 MATLAB特点 (2)3 设计方案 (3)3.1 二阶距(能量) (3)3.2 惯性矩 (4)3.3 相关 (4)3.4 熵 (4)4 程序设计 (4)5 仿真结果与分析 (10)5.1 仿真图 (10)5.2 结果分析 (17)6结论 (18)参考文献 (19)提取图像纹理特征——灰度共生矩阵1 设计目的由于纹理是由灰度分布在空间位置上反复出现而形成的,因而在图像空间中相隔某距离的两象素之间会存在一定的灰度关系,即图像中灰度的空间相关特性。

灰度共生矩阵就是一种通过研究灰度的空间相关特性来描述纹理的常用方法。

直觉上来说,如果图像的是由具有相似灰度值的像素块构成,则灰度共生矩阵的对角元素会有比较大的值;如果图像像素灰度值在局部有变化,那么偏离对角线的元素会有比较大的值。

灰度直方图是对图像上单个象素具有某个灰度进行统计的结果,而灰度共生矩阵是对图像上保持某距离的两象素分别具有某灰度的状况进行统计得到的[5]。

VC_在图像灰度级处理中的算法及实现

VC_在图像灰度级处理中的算法及实现

+3,
,
对于离散图像( 则有
( + # ’ . 0 2 + 4 , # ’ 45 ’ 6 7 ! $ *’ ) . 0 2 + 4 , 0 #) ,
’ ( " ’ + "
+8, $ 0 #( !… 其中 9 是帧内像素总数 ( )* + 45 , 是第 5 级灰度的概 率 ( 95 是图像中 5 级灰度的像素总数 ( 6 是图像中灰度级 +:, 的总数目。 相应的反变换为 4 0 2 7 ! + . , 3’ 算法的实现 利用 ;< = = 实现的灰度图像均衡化处理的流程 为 1 打开一幅灰度图像 ) 初始化 >?@ 对象 ) 创建内存 缓冲区 ) 缓冲区载入 >?@ 对象 ) 统计原图像的灰度值 )原灰度映射到新灰度 )生成新的图像 根据上述的算法描述, 要实现灰度图像的直方图 均衡化, 必须首先统计原图像的各级灰度值, 在程序中 定义了一个数组 6>A&*AA<BC9D E 3F" G 来统计原图像的各 级灰度值, 然后对得到的灰度值做灰度映射, 将映射后 的 结 果 存 到 一 个 新 的 灰 度 映 射 关 系 数 组 HIJKDJH6A E 3F" G 中, 根据这个数组就可以确定出源图像的某个灰 度级经过变换后对应于哪个新的灰度级, 最后将变换 后的结果保存到 >?@ 中。 经过这样的处理后, 就可把源 图像中密集分布的灰度值映射到经过均衡化后的新灰 度级上, 增加了对比度, 改善了视觉效果。 实现直方图均衡化的函数主要代码如下 1 @LLM N?OP)? QRCJ6STA + M).24 6K>?@-, MLOU 6NS/DV,MLOU 6WAS&VD , X C9-S&9A/ YVJ*% 6K.BC*YAZ MLOU 62[KZ MLOU D, -Z @\2Q HIJKDJH6A E 3F" G Z MLOU 6>A&*AA<BC9D E 3F" G Z MLOU 6MS9A@]DA-Z 6MS9A@]DA- 0 N?>2W@\2Q. + 6NS/DV % ^ , Z %B* + D 0 #Z D_ 3F"Z D = = , X 6>A&*AA<BC9D E S G 0 #Z ‘ %B* + D 0 #Z D _ 6WAS&VDZ D = = , X %B* + - 0 #Z -_ 6NS/DVZ - = = , X6K.BC*YA 0 + C9-S&9A/ YVJ* % , 6K>?@- = 6MS9A@]DA% D = -Z 6>A&*AA<BC9D E % + 6K.BC*YA , G = = Z ・!!"・

纹理特征分析的灰度共生矩阵(GLCM)

纹理特征分析的灰度共生矩阵(GLCM)

纹理特征分析的灰度共⽣矩阵(GLCM)纹理分析是对图像灰度(浓淡)空间分布模式的提取和分析。

纹理分析在遥感图像、X射线照⽚、细胞图像判读和处理⽅⾯有⼴泛的应⽤。

关于纹理,还没有⼀个统⼀的数学模型。

它起源于表征纺织品表⾯性质的纹理概念,可以⽤来描述任何物质组成成分的排列情况,例如医学上X 射线照⽚中的肺纹理、⾎管纹理、航天(或航空)地形照⽚中的岩性纹理等。

图像处理中的视觉纹理通常理解为某种基本模式(⾊调基元)的重复排列。

因此描述⼀种纹理包括确定组成纹理的⾊调基元和确定⾊调基元间的相互关系。

纹理是⼀种区域特性,因此与区域的⼤⼩和形状有关。

两种纹理模式之间的边界,可以通过观察纹理度量是否发⽣显著改变来确定。

纹理是物体结构的反映,分析纹理可以得到图像中物体的重要信息,是、和分类识别的重要⼿段。

对于空间域图像或变换域图像(见),可以⽤统计和结构两种⽅法进⾏纹理分析。

统计纹理分析寻找刻划纹理的数字特征,⽤这些特征或同时结合其他⾮纹理特征对图像中的区域(⽽不是单个像素)进⾏分类。

图像局部区域的⾃相关函数、灰度共⽣矩阵、灰度游程以及灰度分布的各种统计量,是常⽤的数字纹理特征。

如灰度共⽣矩阵⽤灰度的空间分布表征纹理。

由于粗纹理的灰度分布随距离的变化⽐细纹理缓慢得多,因此⼆者有完全不同的灰度共⽣矩阵。

结构纹理分析研究组成纹理的基元和它们的排列规则。

基元可以是⼀个像素的灰度、也可以是具有特定性质的连通的像素集合。

基元的排列规则常⽤来描述。

英⽂名称 Texture Analysis;学术解释 指通过⼀定的图像处理技术提取出纹理特征参数,从⽽获得纹理的定量或定性描述的处理过程.纹理分析⽅法按其性质⽽⾔,可分为两⼤类:统计分析⽅法和结构分析⽅法学术定义 纹理是⼀种普遍存在的视觉现象,⽬前对于纹理的精确定义还未形成统⼀认识,多根据应⽤需要做出不同定义. 定义1 按⼀定规则对元素(elements)或基元(primitives)进⾏排列所形成的重复模式. 定义2 如果图像函数的⼀组局部属性是恒定的,或者是缓变的,或者是近似周期性的,则图象中的对应区域具有恒定的纹理.作⽤分析 对这种表⾯纹理的研究称为纹理分析.它在计算机视觉领域有着重要的应⽤. 在机械⼯程中对机械零件加⼯表⾯的这种凹凸不平性开展研究同样具有重要的实践意义。

灰度共生矩阵公式

灰度共生矩阵公式

灰度共生矩阵公式
摘要:
1.灰度共生矩阵公式的概念
2.灰度共生矩阵公式的计算方法
3.灰度共生矩阵公式的应用
正文:
1.灰度共生矩阵公式的概念
灰度共生矩阵是数字图像处理领域中常用的一种矩阵表示方法,主要用于描述一幅图像中像素点的灰度级之间的关系。

灰度共生矩阵公式可以表示为:G(i,j) = N(i,j) / N(i,j) + a * N(i-1,j) + b * N(i,j-1) + c * N(i-1,j-1)
其中,G(i,j) 表示图像中第i 行第j 列的像素点的灰度共生矩阵值,N(i,j) 表示该像素点的灰度值,a、b、c 是灰度共生矩阵的参数,分别表示水平方向、垂直方向和对角方向的灰度值共生信息。

2.灰度共生矩阵公式的计算方法
计算灰度共生矩阵公式的具体步骤如下:
(1)读取图像文件,将图像中的像素点灰度值存储在二维数组中,以便后续计算。

(2)遍历图像中的每个像素点,根据灰度共生矩阵公式计算每个像素点的灰度共生矩阵值,并将结果存储在另一个二维数组中。

(3)完成所有像素点的计算后,得到的二维数组即为该图像的灰度共生矩阵。

3.灰度共生矩阵公式的应用
灰度共生矩阵在图像处理中有广泛的应用,其中最主要的应用是图像的纹理分析。

纹理是图像中局部区域灰度值的分布特性,灰度共生矩阵可以反映图像中像素点之间灰度值的关联程度,从而表征图像的纹理特征。

通过计算灰度共生矩阵,可以得到反映纹理特征的参数,如能量、熵等,这些参数可以用于图像的分类、识别和压缩等任务。

灰度共生矩阵(Gray-levelCo-occurrenceMatrix,GLCM),矩阵的特征量

灰度共生矩阵(Gray-levelCo-occurrenceMatrix,GLCM),矩阵的特征量

灰度共⽣矩阵(Gray-levelCo-occurrenceMatrix,GLCM),矩阵的特征量⼜叫做灰度共现矩阵Prerequisites概念计算⽅式对于精度要求⾼且纹理细密的纹理分布,我们取像素间距为d=1我们来看,matlab内置⼯具箱中的灰度共⽣矩阵的⽣成函数graycomatrix(gray-level co-occurrence matrix)对⽅向的说明:如上图所⽰,⽅向是在每⼀个像素点(pixel of interest)的邻域(当然,边界点除外)中获得的,只不过这⾥的坐标系变为了:δ=(0,±1)δ=(±1,0)δ=(1,−1),δ=(−1,1)δ=(1,1),δ=(−1,−1)⼀旦像素间距离dGLCM所表⽰的是纹理图像的某些统计特性,所谓统计,通俗地讲就是累计某种情况出现的次数,⽤这⼀次数除以总的情况数,即可得其统计意义上的概率。

我们来统计灰度级2与2在-45度和135度⽅向上(也即δ=(1,−1)matlabmatlab相关⼯具箱函数使⽤灰度共⽣矩阵(GLCM)描述和提取图像纹理特征,是⼀个强⼤且流⾏的⼯具,⾃然matlab⼯具箱会提供相应的函数——graycomatrix:给出⼀个图像矩阵,设置⼀些参数,得到其灰度共⽣矩阵,这就是函数的基本⽤法:[glcm, SI] = graycomatrix(I, ...)1主要的参数有⼆个,分别是1. NumLevels(灰度级数)最终glcm的size是NumLevels*NumLevels1. Offset(⽅向[0, 1; -1, 1; -1, 0; -1, -1]):[0, 1]中的1表⽰的偏移数(offset),当然也可以取2或者更多,如上⽂所说,对于精度要求⾼且图像纹理本⾝即很丰富的图像来说,为了更精细地刻画,我们取偏移量(offset)为1。

我们将原始I转换为SI,对SI计算GLCM,SI中元素的值介于[1, NumLevels]之间。

超像素灰度共生矩阵

超像素灰度共生矩阵

超像素灰度共生矩阵
超像素灰度共生矩阵是一种用于图像处理的算法,可以通过将图像分
成多个区域(超像素)来改善图像的分割和分析。

该算法利用超像素
灰度共生矩阵来分析超像素灰度分布的统计特征,并将这些特征用于
图像分类、物体检测等应用中。

从理论上讲,超像素灰度共生矩阵可以提高图像的处理速度和准确性。

该算法利用超像素的特征来替代传统的像素模型,从而减少了复杂度
和计算成本。

此外,超像素灰度共生矩阵可以在多个分类任务中得到
应用,包括图像分类、目标检测和跟踪、以及医学影像分析等。

超像素灰度共生矩阵的具体实现方式包括以下几个步骤。

首先,将图
像分成多个区域来生成超像素。

然后,计算每个超像素的灰度分布,
并使用灰度共生矩阵(GLCM)来描述这些分布的统计特征。

最后,
使用这些特征来对图像进行分类或目标检测。

近年来,超像素灰度共生矩阵在图像处理领域中得到了广泛的应用。

例如,在医学影像分析中,该算法可以用于检测疾病的有无、位置和
严重程度等。

在工业检测中,该算法可以用于检测零件的缺陷和损坏,从而提高生产效率和减少质量问题。

总之,超像素灰度共生矩阵是一种有效的图像处理算法,可以用于图像分类、目标检测和其他重要应用中。

该算法利用超像素和灰度共生矩阵来描述图像特征和统计特性,从而提高了处理速度和准确性。

随着技术的不断改进和发展,该算法的未来应用前景非常广阔。

c++灰度共生矩阵

c++灰度共生矩阵

void CFeatureExtraction::TextureSpectrum256(CVisImage &vimg, float *fptrHistogram,TEXTURE_METHOD method, bool bNormalize){memset(fptrHistogram,0,256*sizeof(float));//清零int i,j,k;//int x,y,m,n;unsigned char V[9],tmp;unsigned char E[8];unsigned char NTU;unsigned char *graydata;CVisImage grayimage;//textureimage;grayimage.CopyOf(vimg,0);//to grayint widthbytes,height,widthpixels;widthbytes=grayimage.GetWidthByBytes();widthpixels=grayimage.Width();height=grayimage.Height();graydata=(unsigned char*)grayimage.GetImageData();//textureimage.CloneImage(grayimage);//texturedata=(unsigned char*)textureimage.GetImageData();int iwidth,i1width,i_1width;for(i=1;i<height-1;i++){iwidth=i*widthbytes;i1width=iwidth+widthbytes;i_1width=iwidth-widthbytes;// for speed upfor(j=1;j<widthpixels-1;j++){V[0]=graydata[iwidth+j];//grayimage.GetPixel(j,i,&V[0]);ASSERT(V[0]==graydata[iwidth+ j]);// for testV[1]=graydata[iwidth+j+1];//grayimage.GetPixel(j+1,i,&V[1]);V[2]=graydata[i1width+j+1];//grayimage.GetPixel(j+1,i+1,&V[2]);V[3]=graydata[i1width+j];//grayimage.GetPixel(j,i+1,&V[3]);V[4]=graydata[i1width+j-1];//grayimage.GetPixel(j-1,i+1,&V[4]);V[5]=graydata[iwidth+j-1];//grayimage.GetPixel(j-1,i,&V[5]);V[6]=graydata[i_1width+j-1];//grayimage.GetPixel(j-1,i-1,&V[6]);V[7]=graydata[i_1width+j];//grayimage.GetPixel(j,i-1,&V[7]);V[8]=graydata[i_1width+j+1];//grayimage.GetPixel(j+1,i-1,&V[8]);//calcute E[i] from V[i]]tmp=V[0];NTU=0;//NTU less than 256int pow2=1;switch(method){case SUBTRACT_CENTER:for(k=0;k<8;k++){/*if(V[k+1]<=tmp) E[k]=0;else{E[k]=1;NTU+=(E[k]*pow2);}*/if(V[k+1]<=tmp) NTU+=pow2;pow2*=2;}break;case SUBTRACT_NEXT:for(k=0;k<8;k++){E[k]=V[k]>V[k+1]?1:0;NTU+=E[k]*pow2;pow2*=2;}break;case GAP_CENTER:for(k=0;k<8;k++){if(abs(V[k+1]-tmp)<TEXTURE_THRESHOLD) E[k]=0;else{E[k]=1;NTU+=(E[k]*pow2);}pow2*=2;}break;case GAP_NEXT:for(k=0;k<8;k++){if(abs(V[k]-V[k+1])<TEXTURE_THRESHOLD) E[k]=0;else{E[k]=1;NTU+=(E[k]*pow2);}pow2*=2;}break;}//end of switch//texturedata[iwidth+j]=NTU;++fptrHistogram[NTU];}//end for j}//end for iif(bNormalize){float total=(float)((height-2)*(widthpixels-2));//neglect pixels at 4 sidesfloat inv=(float)1.0/total;for(i=0;i<256;++i)fptrHistogram[i]*=inv;}#ifdef _DEBUG{float sum=0.0;for(i=0;i<256;i++){sum+=fptrHistogram[i];}TRACE("SUM of hist is %f",sum);ASSERT(sum-1.0<0.00001);}#endif}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//////////////////////////////////////////////////////////////////////
// GrayShow.cpp: implementation of the CGrayShow class. // 灰灰灰灰灰灰灰灰灰灰
//
//////////////////////////////////////////////////////////////////////
delete []PMatrixH; }
//135灰度度度度灰灰灰灰灰灰 //90灰度度度度灰灰灰灰灰灰
//////////////////////////////////////////////////////////////////// //功功:装装原原 //参原:FilePathName-原原图图图图图
//计灰ux double ux = 0.0; double localtotal = 0.0; for(i=0; i<dim; i++) {
localtotal = 0.0; for(j=0; j<dim; j++) {
localtotal += pdMatrix[i*dim+j]; } ux += (double)i * localtotal; }
{
int i,j;
double *pdMatrix;
pdMatrix = new double[dim*dim];
int total = 0; for(i=0; i<dim; i++) {
for(j=0; j<dim; j++) {
total += pMatrix[i*dim+j]; } }
for(i=0; i<dim; i++) {
//
FeatureCorrelation-相相
//
FeatureLocalCalm-局局局局
//
pMatrix-灰灰灰灰
//
dim-灰灰灰灰度共原
///////////////////////////////////////////////////////////////////////////////////
for(j=0; j<dim; j++) {
pdMatrix[i*dim + j] = (double)pMatrix[i*dim + j]/(double)total; } }
FeatureEnergy = 0.0; FeatureEntropy = 0.0;
2
FeatureInertiaQuadrature = 0.0; FeatureLocalCalm = 0.0;
//计灰sigmay double sigmay = 0.0; for(j=0; j<dim; j++) {
localtotal = 0.0; for(i=0; i<dim; i++) {
localtotal += pdMatrix[i*dim+j]; } sigmay += (double)(j-uy) * (double)(j-uy) * localtotal; }
//
m_tOriPixelArray[i][j].rgbReserved = 0;
//
m_tResPixelArray[i][j]=m_tOriPixelArray[i][j];
//
ImageArray[i][j] = (BYTE)(((unsigned int)m_tOriPixelArray[i][j].rgbBlue
//计灰相相 FeatureCorrelation = 0.0; for(i=0; i<dim; i++) {
for(j=0; j<dim; j++)
3
{ FeatureCorrelation += (double)(i-ux) * (double)(j-uy) * pdMatrix[i*dim+j];
// m_tResPixelArray = new RGBQUAD*[ImageHeight];
// ImageArray = new BYTE*[ImageHeight];
// for(int l=0 ; l<ImageHeight; l++)
// {
//
m_tOriPixelArray[l] = new RGBQUAD[ImageWidth];
#include "stdafx.h"
#include "GrayShow.h" #include "math.h"
#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif
//
{
//
delete m_tOriPixelArray[i];
1
//
delete m_tResPixelArray[i];
//
delete ImageArray[i];
//
}
// }
//
// m_dib->Open(FilePathName);
// ImageWidth = m_dib->GetWidth();
//
PMatrixV[i] = new int[GrayLayerNum];
// }
}
CGrayShow::~CGrayShow() {
if(PMatrixRD)
delete []PMatrixRD ; if(PMatrixLD)
delete []PMatrixLD ; if(PMatrixV)
delete []PMatrixV ; if(PMatrixH)
// for(i=0; i<GrayLayerNum; i++)
// {
//
PMatrixH[i] = new int[GrayLayerNum];
//
PMatrixLD[i]= new int[GrayLayerNum];
//
PMatrixRD[i]= new int[GrayLayerNum];
for(j=0; j<ImageWidth; j++)
//
{
//
m_tOriPixelArray[i][j].rgbBlue =colorTable[count++];
//
m_tOriPixelArray[i][j].rgbGreen=colorTable[count++];
//
m_tOriPixelArray[i][j].rgbRed =colorTable[count++];
FeatureEntropy -= pdMatrix[i*dim+j]*log(pdMatrix[i*dim+j]); }
//惯惯灰 FeatureInertiaQuadrature += (double)(i-j)*(double)(i-j)*pdMatrix[i*dim+j];
//局局局局 FeatureLocalCalm += pdMatrix[i*dim+j]/(1+(double)(i-j)*(double)(i-j)); } }
//m_tOriPixelArray = NULL;//原原原原原原 //m_tResPixelArray = NULL;//参参原原原原
// m_dib = new CDib();
distance = 5;
FilterWindowWidth = 16; GrayLayerNum = 16; //初原初初初8个灰灰个,可可可可 //这这灰灰灰灰这初GrayLayerNum×GrayLayerNum
// ImageHeight = m_dib->GetHeight();
//
// BYTE *colorTable;
// colorTable = (BYTE *)m_dib->m_pDibBits;
// int byteBitCount = m_dib->GetBiBitCount()/8;
//
// m_tOriPixelArray = new RGBQUAD*[ImageHeight];
// }
//}
////////////////////////////////////////////////////////////////////////////////////
//函原功功:计灰计计计计
//参原:FeatureEnergy-功能
//
FeatureEntropy-熵
//
Fea惯灰
// void CGrayShow::LoadImage(CString &FilePathName)
// {
//
// }
// {
// int i,j; // //检检检检初检,不初检不不不不不不
// if(m_tOriPixelArray !=NULL)
// {
//
for(i=0; i<ImageHeight; i++)
//计灰功能、熵、惯惯灰、局局局局 for(i=0; i<dim; i++) {
for(j=0; j<dim; j++) {
相关文档
最新文档