一直以来向社区选取,最近搞了一点小东西。一方面回馈社区,一方面留个记录,方便自己以后查找。声明:水平有限,不好勿喷(怕)

最近在和小伙伴做基于风4的海雾识别,几个判据之后,还有一些不均匀的,零碎的,单个的积云也被识别为海雾。在老师的建议下,我们使用灰度共生矩阵来剔除这些零碎的积云。

一·问题分析——先来看图。

1处的很小的碎点,2处的粗糙处,认为是碎积云,均要剔除。左上角均匀的地方,认为是雾。

二·参考

1·灰度共生矩阵的了解,参考自(8条消息) 对数据集使用GLCM(灰度共生矩阵)进行纹理提取_tenju的博客-CSDN博客_fast_glcm

2·对数据求灰度共生矩阵的函数,参考自

LinghuiXia/GLCM: 本实验的主要目的是基于遥感图像计算灰度共生矩阵,并基于该矩阵计算多种纹理特征。所有的计算结果已与ENVI结果进行对比,实验结果一致。 (github.com)

三·思路:我们处理后的数据只有1和0,分别代表有雾和无雾,利用灰度共生矩阵,统计出窗口内1,0相邻的个数,如果该个数较大,说明是图中2的情况,将其赋值为零剔除;统计出窗口内1,1相邻的个数,如果很小,则对应图中1的情况,同样赋0剔除。

四·这是处理之后的结果,已经将大量不均匀的碎积云剔除。

五·子函数及剔除程序(其中用到的包,去第二节第2个的get_glcm和main文件里找)

# <codecell>
# 第二部分算法修改。
# 下面两个子函数摘自第二节的第2个,作用是求对应数据的灰度共生矩阵。
def image_patch(img2, slide_window, h, w):image = img2window_size = slide_windowpatch = np.zeros((slide_window, slide_window, h, w), dtype=np.uint8)for i in range(patch.shape[2]):for j in range(patch.shape[3]):patch[:, :, i, j] = img2[i : i + slide_window, j : j + slide_window]return patchdef calcu_glcm(img, vmin=0, vmax=255, nbit=2, slide_window=7, step=[2], angle=[0]):mi, ma = vmin, vmaxh, w = img.shape# Compressed gray range:vmin: 0-->0, vmax: 256-1 -->nbit-1bins = np.linspace(mi, ma+1, nbit+1)img1 = np.digitize(img, bins) - 1# (512, 512) --> (slide_window, slide_window, 512, 512)img2 = cv2.copyMakeBorder(img1, floor(slide_window/2), floor(slide_window/2), floor(slide_window/2), floor(slide_window/2), cv2.BORDER_REPLICATE) # 图像扩充patch = np.zeros((slide_window, slide_window, h, w), dtype=np.uint8)patch = image_patch(img2, slide_window, h, w)# Calculate GLCM (5, 5, 512, 512) --> (64, 64, 512, 512)# greycomatrix(image, distances, angles, levels=None, symmetric=False, normed=False)glcm = np.zeros((nbit, nbit, len(step), len(angle), h, w), dtype=np.uint8)for i in range(patch.shape[2]):for j in range(patch.shape[3]):glcm[:, :, :, :, i, j]= greycomatrix(patch[:, :, i, j], step, angle, levels=nbit)return glcm#下面是将fog数据先化为想要的二维,再对其求灰度相关矩阵,最后利用灰度相关矩阵的计数结果对矩阵对应的像素点周围数据进行剔除。
fog = fog.reshape(rows,cols)
nbit = 2 # gray levels
mi, ma = 0,1  # max gray and min gray
slide_window = 5 # sliding window
# step = [2, 4, 8, 16] # step
# angle = [0, np.pi/4, np.pi/2, np.pi*3/4] # angle or direction
step = [2]
angle = [np.pi/4]
h, w = fog.shape
glcm = calcu_glcm(fog, mi, ma, nbit, slide_window, step, angle)
for i in range(glcm.shape[2]):for j in range(glcm.shape[3]):glcm_cut = np.zeros((nbit, nbit, h, w), dtype=np.float32)glcm_cut = glcm[:, :, i, j, :, :]#剔除大片不均匀
for m in range(rows):for n in range(cols):if(glcm_cut[0,1,m,n]+glcm_cut[1,0,m,n]>10) :fog[m-2:m,n-2:n]=0#剔除单个碎点
for m in range(rows):for n in range(cols):if(glcm_cut[1,1,m,n]<10) :fog[m-2:m,n-2:n]=0

利用灰度共生矩阵剔除图片中的不均匀点及碎点(直接使用数据或从图片读取数据)相关推荐

  1. bp 神经网络 优点 不足_【学术论文】基于灰度共生矩阵和BP神经网络的乳腺肿瘤识别...

    摘要 乳腺肿瘤是女性病发率极高的一种肿瘤疾病, 但也是一种可以通过早期确诊.提早治疗来降低病死率的一种疾病.提出灰度共生矩阵结合BP神经网络的方法, 提高乳腺肿瘤的识别率.首先将红外乳腺图像进行预处理 ...

  2. matlab 灰度共生矩阵熵,结合灰度共生矩阵和熵的图像修复算法

    摘 要: 利用灰度共生矩阵提取图像纹理特征值,然后根据熵值的大小来实现模块大小的选择.另外,在寻找最佳匹配块时,同时考虑了颜色信息的差异和空间距离的因素.最后,给出了客观评价图像修复质量的PSNR度量 ...

  3. python灰度共生矩阵_四:利用python的skimage计算灰度共生矩阵

    我们经常提取影像的纹理信息,而提取纹理信息,我们常用灰度共生矩阵,下面就是利用skimage计算图像的GLCM 那么,计算GLCM的是什么包呢: from skimage.feature import ...

  4. 特征提取——灰度共生矩阵(GLCM)

    一. 定义 由于灰度图的纹理是由不同灰度值在空间位置上以某种模式反复出现而形成的,因而在图像空间中相隔某距离的两像素之间会存在一定的灰度关系,即图像中灰度值存在空间相关性.灰度共生矩阵正是利用这一原理 ...

  5. 图像处理合集:图像基础操作(图像翻转、图像锐化、图像平滑等)、图像阈值分割(边缘检测、迭代法、OSTU、区域增长法等)、图像特征提取(图像分割、灰度共生矩阵、PCA图像压缩)

    文章目录 说明 一.图像锐化或增强相关 1. 图像点处理 1.1 图像翻转 1.2 幂运算和对数运算 2. 直方图处理 3. 图像平滑 4. 图像锐化 5. 图像增强 二.图像阈值分割 1. 边缘检测 ...

  6. 【图像算法】图像特征:GLCM灰度共生矩阵纹理特征

    [图像算法]图像特征:GLCM SkySeraph Aug 27th 2011  HQU Email:zgzhaobo@gmail.com    QQ:452728574 Latest Modifie ...

  7. Gray-level Co-occurrence Matrix(灰度共生矩阵)

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

  8. 灰度共生矩阵纹理特征提取_纹理特征提取

    纹理通常被定义为图像的某种局部特征,或是对局部区域中像素之间关系的一种度量. 纹理的标志有三要素:①某种局部的序列性,在该序列更大的区域内不断重复:②序列是由基本部分非随机排列组成的:③各部分大致都是 ...

  9. MATLAB 在图像处理和机器视觉的应用举例01 - 官网培训视频笔记(下)分类/灰度共生矩阵/纹理分类学习

    前言: 本节继续讨论Matlab的机器视觉工具集举例,这次为分类的综合实现:该例子,用到了图像处理,统计,并行计算等方法. 1 分类的难度: [计算机视觉里面,分类的精髓在选取适当的数据集和算法,这一 ...

最新文章

  1. MyBatis源码流程分析
  2. 网络推广中常见的网站建设细节中有哪些重点值得网络推广专员重视?
  3. python有道自动翻译_利用python写一个有道翻译的脚本
  4. java mail 503_邮件配置报503错误,发送失败
  5. python 网络爬虫 第一天
  6. java初级开发面试题
  7. 化工材料企业中英双语网站搭建模板
  8. 计算机应用技术在医院的应用,计算机应用技术对医院信息化的影响探讨
  9. 1468. 计算税后工资
  10. STM32WB55_NUCLEO开发(8)----授权
  11. UE4-(光照)光照贴图
  12. Chrome 浏览器调试的日常使用总结
  13. 用计算机读心书,423世界读书日,线上线下共读华章
  14. Mac下安装vim的插件YouCompleteMe及注意事项
  15. 极光推送REST API与Java后台对接
  16. #P07754. 加数
  17. 显卡测试软件3d mark,AllBenchmark(3D显卡测试工具)1.3 免费版
  18. 最新版本Portraiture4.1中文版ps磨皮滤镜插件安装包
  19. jetson nano GPIO控制说明
  20. 字节跳动,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢...

热门文章

  1. 压缩 : tar . giz
  2. 平面设计师必须注意的细节有哪些
  3. python 拼多多_8.05拼多多编程题(python)
  4. 开始学CPU啦,任务艰巨
  5. 计蒜客 烦恼的高考志愿题解
  6. 微信小程序性能优化技巧
  7. CSS字体、文本样式
  8. 逆战!你我共进退—uni-app开发多平台小程序
  9. 计算机文化教育对学生思维品质的影响,信息技术教育我们教什么?
  10. 劳动仲裁流程怎么走?