Allen

写代码是热爱,写到世界充满爱

  • HomePage
  • Categories
  • Archives
  • Essay
  • Tags
总文章数 379
所有文章 友链 关于我

Allen

写代码是热爱,写到世界充满爱

  • HomePage
  • Categories
  • Archives
  • Essay
  • Tags

5-直方图

阅读数:27次 2022-04-28
字数统计: 2.5k字   |   阅读时长: 9分

文章导航

× 文章目录
  1. 1. 1 灰度直方图
    1. 1.1. 1.1 原理
    2. 1.2. 1.2 直方图的计算和绘制
    3. 1.3. 1.3 掩膜的应用
  2. 2. 2 直方图均衡化
    1. 2.1. 2.1 原理与应用
      1. 2.1.0.0.1. 想象一下,如果一副图像中的大多数像素点的像素值都集中在某一个小的灰度值值范围之内会怎样呢?如果一幅图像整体很亮,那所有的像素值的取值个数应该都会很高。所以应该把它的直方图做一个横向拉伸(如下图),就可以扩大图像像素值的分布范围,提高图像的对比度,这就是直方图均衡化要做的事情。
      2. 2.1.0.0.2. “直方图均衡化”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在更广泛灰度范围内的分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
      3. 2.1.0.0.3. 这种方法提高图像整体的对比度,特别是有用数据的像素值分布比较接近时,在X光图像中使用广泛,可以提高骨架结构的显示,另外在曝光过度或不足的图像中可以更好的突出细节。
  • 2.2. 2.2 自适应的直方图均衡化
    1. 2.2.0.0.1. 上述的直方图均衡,我们考虑的是图像的全局对比度。 的确在进行完直方图均衡化之后,图片背景的对比度被改变了,在猫腿这里太暗,我们丢失了很多信息,所以在许多情况下,这样做的效果并不好。如下图所示,对比下两幅图像中雕像的画面,由于太亮我们丢失了很多信息。
  • Author: haoransun
    WeChat: SHR—97

    1 灰度直方图

    1.1 原理

    直方图是对数据进行统计的一种方法,并且将统计值组织到一系列实现定义好的 bin 当中。其中, bin 为直方图中经常用到的一个概念,可以译为 “直条” 或 “组距”,其数值是从数据中计算出的特征统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。
      图像直方图(Image Histogram)是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素个数。这种直方图中,横坐标的左侧为较暗的区域,而右侧为较亮的区域。因此一张较暗图片的直方图中的数据多集中于左侧和中间部分,而整体明亮、只有少量阴影的图像则相反。

    注意:直方图是根据灰度图进行绘制的,而不是彩色图像。   假设有一张图像的信息(灰度值 0 - 255,已知数字的范围包含 256 个值,于是可以按一定规律将这个范围分割成子区域(也就是 bins)。如:

    直方图的一些术语和细节:

    • dims:需要统计的特征数目。在上例中,dims = 1 ,因为仅仅统计了灰度值。
    • bins:每个特征空间子区段的数目,可译为 “直条” 或 “组距”,在上例中, bins = 16。
    • range:要统计特征的取值范围。在上例中,range = [0, 255]。

    直方图的意义:

    • 直方图是图像中像素强度分布的图形表达方式。
    • 它统计了每一个强度值所具有的像素个数。
    • 不同的图像的直方图可能是相同的

    1.2 直方图的计算和绘制

    我们使用OpenCV中的方法统计直方图,并使用matplotlib将其绘制出来。

    API:

    1
    cv2.calcHist(images,channels,mask,histSize,ranges[,hist[,accumulate]])

    参数:

    • images: 原图像。当传入函数时应该用中括号 [] 括起来,例如:[img]。

    • channels: 如果输入图像是灰度图,它的值就是 [0];如果是彩色图像的话,传入的参数可以是 [0],[1],[2] 它们分别对应着通道 B,G,R。

    • mask: 掩模图像。要统计整幅图像的直方图就把它设为 None。但是如果你想统计图像某一部分的直方图的话,你就需要制作一个掩模图像,并使用它。(后边有例子)

    • histSize:BIN 的数目。也应该用中括号括起来,例如:[256]。

    • ranges: 像素值范围,通常为 [0,256]

    示例:

    如下图,绘制相应的直方图

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import numpy as np
    import cv2 as cv
    from matplotlib import pyplot as plt
    # 1 直接以灰度图的方式读入
    img = cv.imread('./image/cat.jpeg',0)
    # 2 统计灰度图
    histr = cv.calcHist([img],[0],None,[256],[0,256])
    # 3 绘制灰度图
    plt.figure(figsize=(10,6),dpi=100)
    plt.plot(histr)
    plt.grid()
    plt.show()

    1.3 掩膜的应用

    掩膜是用选定的图像、图形或物体,对要处理的图像进行遮挡,来控制图像 处理的区域。

    在数字图像处理中,我们通常使用二维矩阵数组进行掩膜。掩膜是由0和1组成一个二进制图像,利用该掩膜图像要处理的图像进行掩膜,其中1值的区域被处理,0 值区域被屏蔽,不会处理。

    掩膜的主要用途是:

    • 提取感兴趣区域:用预先制作的感兴趣区掩模与待处理图像进行”与“操作,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。
    • 屏蔽作用:用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。
    • 结构特征提取:用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。
    • 特殊形状图像制作

    掩膜在遥感影像处理中使用较多,当提取道路或者河流,或者房屋时,通过一个掩膜矩阵来对图像进行像素过滤,然后将我们需要的地物或者标志突出显示出来。

    我们使用cv.calcHist()来查找完整图像的直方图。 如果要查找图像某些区域的直方图,该怎么办? 只需在要查找直方图的区域上创建一个白色的掩膜图像,否则创建黑色, 然后将其作为掩码mask传递即可。

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import numpy as np
    import cv2 as cv
    from matplotlib import pyplot as plt
    # 1\. 直接以灰度图的方式读入
    img = cv.imread('./image/cat.jpeg',0)
    # 2\. 创建蒙版
    mask = np.zeros(img.shape[:2], np.uint8)
    mask[400:650, 200:500] = 255
    # 3.掩模
    masked_img = cv.bitwise_and(img,img,mask = mask)
    # 4\. 统计掩膜后图像的灰度图
    mask_histr = cv.calcHist([img],[0],mask,[256],[1,256])
    # 5\. 图像展示
    fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(10,8))
    axes[0,0].imshow(img,cmap=plt.cm.gray)
    axes[0,0].set_title("原图")
    axes[0,1].imshow(mask,cmap=plt.cm.gray)
    axes[0,1].set_title("蒙版数据")
    axes[1,0].imshow(masked_img,cmap=plt.cm.gray)
    axes[1,0].set_title("掩膜后数据")
    axes[1,1].plot(mask_histr)
    axes[1,1].grid()
    axes[1,1].set_title("灰度直方图")
    plt.show()

    2 直方图均衡化

    2.1 原理与应用

    想象一下,如果一副图像中的大多数像素点的像素值都集中在某一个小的灰度值值范围之内会怎样呢?如果一幅图像整体很亮,那所有的像素值的取值个数应该都会很高。所以应该把它的直方图做一个横向拉伸(如下图),就可以扩大图像像素值的分布范围,提高图像的对比度,这就是直方图均衡化要做的事情。

    “直方图均衡化”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在更广泛灰度范围内的分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
    这种方法提高图像整体的对比度,特别是有用数据的像素值分布比较接近时,在X光图像中使用广泛,可以提高骨架结构的显示,另外在曝光过度或不足的图像中可以更好的突出细节。

    使用opencv进行直方图统计时,使用的是:

    API:

    1
    dst = cv.equalizeHist(img)

    参数:

    • img: 灰度图像

    返回:

    • dst : 均衡化后的结果

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import numpy as np
    import cv2 as cv
    from matplotlib import pyplot as plt
    # 1\. 直接以灰度图的方式读入
    img = cv.imread('./image/cat.jpeg',0)
    # 2\. 均衡化处理
    dst = cv.equalizeHist(img)
    # 3\. 结果展示
    fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(10,8),dpi=100)
    axes[0].imshow(img,cmap=plt.cm.gray)
    axes[0].set_title("原图")
    axes[1].imshow(dst,cmap=plt.cm.gray)
    axes[1].set_title("均衡化后结果")
    plt.show()

    2.2 自适应的直方图均衡化

    上述的直方图均衡,我们考虑的是图像的全局对比度。 的确在进行完直方图均衡化之后,图片背景的对比度被改变了,在猫腿这里太暗,我们丢失了很多信息,所以在许多情况下,这样做的效果并不好。如下图所示,对比下两幅图像中雕像的画面,由于太亮我们丢失了很多信息。

    为了解决这个问题, 需要使用自适应的直方图均衡化。 此时, 整幅图像会被分成很多小块,这些小块被称为“tiles”(在 OpenCV 中 tiles 的 大小默认是 8x8),然后再对每一个小块分别进行直方图均衡化。 所以在每一个的区域中, 直方图会集中在某一个小的区域中)。如果有噪声的话,噪声会被放大。为了避免这种情况的出现要使用对比度限制。对于每个小块来说,如果直方图中的 bin 超过对比度的上限的话,就把 其中的像素点均匀分散到其他 bins 中,然后在进行直方图均衡化。

    最后,为了 去除每一个小块之间的边界,再使用双线性差值,对每一小块进行拼接。

    API:

    1
    cv.createCLAHE(clipLimit, tileGridSize)

    参数:

    • clipLimit: 对比度限制,默认是40
    • tileGridSize: 分块的大小,默认为8*8

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import numpy as np
    import cv2 as cv
    # 1\. 以灰度图形式读取图像
    img = cv.imread('./image/cat.jpeg',0)
    # 2\. 创建一个自适应均衡化的对象,并应用于图像
    clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
    cl1 = clahe.apply(img)
    # 3\. 图像展示
    fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(10,8),dpi=100)
    axes[0].imshow(img,cmap=plt.cm.gray)
    axes[0].set_title("原图")
    axes[1].imshow(cl1,cmap=plt.cm.gray)
    axes[1].set_title("自适应均衡化后的结果")
    plt.show()


    总结

    1. 灰度直方图:
      • 直方图是图像中像素强度分布的图形表达方式。
      • 它统计了每一个强度值所具有的像素个数。
      • 不同的图像的直方图可能是相同的
        1
        cv.calcHist(images,channels,mask,histSize,ranges [,hist [,accumulate]])
    2. 掩膜
      创建蒙版,透过mask进行传递,可获取感兴趣区域的直方图
    3. 直方图均衡化:增强图像对比度的一种方法
      1
      cv.equalizeHist(): 输入是灰度图像,输出是直方图均衡图像
    4. 自适应的直方图均衡
      将整幅图像分成很多小块,然后再对每一个小块分别进行直方图均衡化,最后进行拼接
      1
      clahe = cv.createCLAHE(clipLimit, tileGridSize)
    • 人工智能
    • OpenCV

    扫一扫,分享到微信

    微信分享二维码
    6-边缘检测
    4-图像平滑
    1. 1. 1 灰度直方图
      1. 1.1. 1.1 原理
      2. 1.2. 1.2 直方图的计算和绘制
      3. 1.3. 1.3 掩膜的应用
    2. 2. 2 直方图均衡化
      1. 2.1. 2.1 原理与应用
        1. 2.1.0.0.1. 想象一下,如果一副图像中的大多数像素点的像素值都集中在某一个小的灰度值值范围之内会怎样呢?如果一幅图像整体很亮,那所有的像素值的取值个数应该都会很高。所以应该把它的直方图做一个横向拉伸(如下图),就可以扩大图像像素值的分布范围,提高图像的对比度,这就是直方图均衡化要做的事情。
        2. 2.1.0.0.2. “直方图均衡化”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在更广泛灰度范围内的分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
        3. 2.1.0.0.3. 这种方法提高图像整体的对比度,特别是有用数据的像素值分布比较接近时,在X光图像中使用广泛,可以提高骨架结构的显示,另外在曝光过度或不足的图像中可以更好的突出细节。
  • 2.2. 2.2 自适应的直方图均衡化
    1. 2.2.0.0.1. 上述的直方图均衡,我们考虑的是图像的全局对比度。 的确在进行完直方图均衡化之后,图片背景的对比度被改变了,在猫腿这里太暗,我们丢失了很多信息,所以在许多情况下,这样做的效果并不好。如下图所示,对比下两幅图像中雕像的画面,由于太亮我们丢失了很多信息。
  • Related Issues not found

    Please contact @JavaSsun to initialize the comment

    © 2018-2024 Allen
    Hexo Theme Yilia by Litten
    本站总访问量73002次 | 本站访客数65589人
    • 所有文章
    • 友链
    • 关于我

    tag:

    • Elasticsearch
    • 面试
    • MQ
    • Redis
    • Nginx
    • Docker
    • Git
    • Dubbo
    • 论文
    • MySql
    • Tools
    • 日志
    • Linux
    • 系统架构
    • Java
    • 源码解析
    • Hexo-yilia
    • Jvm
    • MyBatis
    • SpringBoot
    • Swagger2
    • 算法
    • 分布式
    • Photo
    • HTTP
    • Hystrix
    • SSL
    • ELK
    • IDEA
    • Jwt
    • 定时任务
    • BigData
    • Maven
    • Quartz
    • 人工智能
    • 地图坐标转换
    • 网络编程
    • Python
    • SpringCloud
    • 搬砖结晶
    • OpenCV
    • 推荐系统
    • 目标检测
    • SkLearn
    • 图神经网络
    • PyTorch
    • TensorFlow
    • 数据挖掘
    • 研究生课题-AD检测
    • 研究生成果

      缺失模块。
      1、请确保node版本大于6.2
      2、在博客根目录(注意不是yilia根目录)执行以下命令:
      npm i hexo-generator-json-content --save

      3、在根目录_config.yml里添加配置:

        jsonContent:
          meta: false
          pages: false
          posts:
            title: true
            date: true
            path: true
            text: false
            raw: false
            content: false
            slug: false
            updated: false
            comments: false
            link: false
            permalink: false
            excerpt: false
            categories: false
            tags: true
      

    • 研究生总结

      2024-05-09

      #论文#人工智能#搬砖结晶#图神经网络#研究生课题-AD检测#研究生成果

    • 12-ROI文件分析

      2023-11-22

      #Tools#人工智能#研究生课题-AD检测

    • 11-DTI预处理

      2023-11-16

      #Tools#人工智能#研究生课题-AD检测

    • 10-GRETNA处理fMRI

      2023-11-05

      #Tools#人工智能#研究生课题-AD检测

    • 9-(图)利用Matlab的spm12工具处理fMRI为ROI

      2023-10-28

      #Tools#人工智能#研究生课题-AD检测

    • 9-(文)利用Matlab的spm12工具处理fMRI为ROI

      2023-10-26

      #Tools#人工智能#研究生课题-AD检测

    • 8-7-FSL软件使用

      2023-10-20

      #Tools#人工智能#研究生课题-AD检测

    • 8-6-FreeSurfer软件使用

      2023-10-16

      #Tools#人工智能#研究生课题-AD检测

    • 8-5-SPM软件使用

      2023-10-10

      #Tools#人工智能#研究生课题-AD检测

    • 8-4-MRI预处理

      2023-09-16

      #Tools#人工智能#研究生课题-AD检测

    • 8-3-UNet提取海马体

      2023-09-10

      #人工智能#研究生课题-AD检测

    • 8-2-ADNI论文数据预处理

      2023-09-02

      #论文#Tools#人工智能#研究生课题-AD检测

    • 8-1-数据预处理工具

      2023-08-05

      #Tools#人工智能#研究生课题-AD检测

    • 7-2-GNN For AD

      2023-07-25

      #论文#人工智能#图神经网络#研究生课题-AD检测

    • 7-1-GNN For Medical Diagnosis

      2023-06-28

      #论文#人工智能#图神经网络#研究生课题-AD检测

    • 6-2-SCI一区论文精读

      2023-05-25

      #论文#人工智能#研究生课题-AD检测

    • 6-1-MRI成像及ADNI简介

      2023-05-10

      #人工智能#研究生课题-AD检测

    • 5-ADNI-实验数据筛选与下载

      2023-04-25

      #人工智能#研究生课题-AD检测

    • 4-AD文献的阅读记录

      2023-04-20

      #论文#人工智能#研究生课题-AD检测

    • 3-指标特征选择

      2023-04-05

      #人工智能#研究生课题-AD检测

    • 2-AD有关课题

      2023-03-25

      #人工智能#研究生课题-AD检测

    • 1-阿尔茨海默病

      2023-03-20

      #人工智能#研究生课题-AD检测

    • 7-SHAP

      2023-03-15

      #人工智能#数据挖掘

    • 6-模型的融合技术大总结与结果部署

      2023-02-25

      #人工智能#数据挖掘

    • 5-模型建立与调参

      2023-02-20

      #人工智能#数据挖掘

    • 4-特征工程

      2023-02-12

      #人工智能#数据挖掘

    • 3-数据清洗和转换技巧

      2023-02-09

      #人工智能#数据挖掘

    • 2-数据的探索性-EDA分析

      2023-02-06

      #人工智能#数据挖掘

    • 1-赛题理解

      2023-02-04

      #人工智能#数据挖掘

    • 0-零基础入门数据挖掘学习路径

      2023-02-03

      #人工智能#数据挖掘

    • 重温深度学习优化算法

      2023-01-28

      #人工智能

    • 重温归一化(MinMaxScaler)和标准化(StandardScaler)

      2023-01-20

      #人工智能

    • 重温Batch Normalization

      2023-01-15

      #人工智能

    • 交叉熵损失函数和平方损失的区别

      2023-01-12

      #人工智能

    • loss不下降的解决方法

      2023-01-10

      #人工智能

    • 重温Seq2Seq和Attention机制

      2023-01-05

      #人工智能

    • 重温LSTM和GRU

      2022-12-28

      #人工智能

    • 重温RNN

      2022-12-25

      #人工智能

    • pytorch_geometric离线安装

      2022-12-19

      #人工智能#图神经网络#PyTorch

    • pytorch_geometric安装

      2022-12-18

      #人工智能#图神经网络#PyTorch

    • 生成式对抗网络GAN的工作原理

      2022-12-13

      #人工智能

    • Ubuntu查看cuda-cudnn等版本命令

      2022-12-10

      #Tools#人工智能

    • CUDA和CuDNN安装

      2022-12-08

      #Tools#人工智能

    • GPU之nvidia-smi命令详解

      2022-12-05

      #Tools#人工智能

    • 1-TensorFlow简介及安装

      2022-12-01

      #人工智能#TensorFlow

    • 入门图神经网络

      2022-11-25

      #人工智能#图神经网络

    • 10-模型的保存加载-模型微调-GPU使用及Pytorch常见报错

      2022-11-06

      #人工智能#PyTorch

    • 9-正则化与标准化大总结

      2022-10-28

      #人工智能#PyTorch

    • 8-Tensorboard可视化与Hook机制

      2022-10-25

      #人工智能#PyTorch

    • 7-优化器和学习率调整策略

      2022-10-23

      #人工智能#PyTorch

    • 6-模型的权值初始化与损失函数介绍

      2022-10-20

      #人工智能#PyTorch

    • 5-nn各网络层介绍

      2022-10-17

      #人工智能#PyTorch

    • Pytorch提取神经网络层结构-层参数及自定义初始化

      2022-10-14

      #人工智能#PyTorch

    • 4-模型创建Module-模型容器Containers及AlexNet网络搭建

      2022-10-12

      #人工智能#PyTorch

    • 3-Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms)

      2022-10-09

      #人工智能#PyTorch

    • 2-Pytorch的动态图-自动求导及逻辑回归

      2022-10-02

      #人工智能#PyTorch

    • 1-Pytorch的数据载体张量与线性回归

      2022-09-28

      #人工智能#PyTorch

    • Pytorch与词向量

      2022-09-25

      #人工智能#PyTorch

    • Pytorch基础理论和简单的神经网络实现

      2022-09-23

      #人工智能#PyTorch

    • Windows下的Pytorch环境搭建

      2022-09-20

      #人工智能#PyTorch

    • 图卷积网络-GCN

      2022-09-15

      #人工智能#图神经网络

    • GCN使用的数据集Cora等

      2022-09-10

      #人工智能#图神经网络

    • 图网络属性介绍

      2022-09-08

      #人工智能#图神经网络

    • 图神经网络理论基础

      2022-09-05

      #人工智能#图神经网络

    • 5-AI上推荐之AutoRec与Deep Crossing模型(改变神经网络的复杂程度)

      2022-08-28

      #人工智能#推荐系统

    • 4-AI上推荐之FM和FFM(九九归一)

      2022-08-17

      #人工智能#推荐系统

    • 梯度提升树GBDT的理论学习与细节补充

      2022-08-05

      #人工智能#推荐系统

    • 梯度下降算法的细节补充(凸函数, 导数, 偏导数,梯度, 方向导数以及负梯度下降最快背后的泰勒身影)

      2022-07-28

      #人工智能#推荐系统

    • 逻辑回归、优化算法和正则化的幕后细节补充

      2022-07-24

      #人工智能#推荐系统

    • 3-AI上推荐之逻辑回归模型与GBDT+LR(特征工程模型化的开端)

      2022-07-20

      #人工智能#推荐系统

    • 奇异值分解(SVD)的原理详解及推导

      2022-07-13

      #人工智能#推荐系统

    • 2-AI上推荐之隐语义模型(LFM)和矩阵分解(MF)

      2022-07-10

      #人工智能#推荐系统

    • 1-AI上推荐之协同过滤

      2022-07-02

      #人工智能#推荐系统

    • R-CNN and Fast R-CNN and Faster R-CNN and SPP

      2022-06-15

      #人工智能#目标检测

    • 10-Harris和Shi-Tomas算法

      2022-06-06

      #人工智能#OpenCV

    • 9-角点特征

      2022-06-03

      #人工智能#OpenCV

    • 8-图像变换-傅里叶变换

      2022-05-29

      #人工智能#OpenCV

    • 7-模板匹配与霍夫变换

      2022-05-15

      #人工智能#OpenCV

    • 6-边缘检测

      2022-05-08

      #人工智能#OpenCV

    • 5-直方图

      2022-04-28

      #人工智能#OpenCV

    • 4-图像平滑

      2022-04-26

      #人工智能#OpenCV

    • 3-形态学操作

      2022-04-22

      #人工智能#OpenCV

    • 2-几何变换

      2022-04-20

      #人工智能#OpenCV

    • 1-图像的基础操作

      2022-04-18

      #人工智能#OpenCV

    • 0-OpenCV简介

      2022-04-15

      #人工智能#OpenCV

    • Ubuntu18.04下安装OpenCV3.4

      2022-04-01

      #人工智能#OpenCV

    • 后 R-CNN时代, Faster R-CNN、SSD、YOLO 各类变体统治下的目标检测综述:Faster R-CNN系列胜了吗?

      2022-03-28

      #人工智能#目标检测

    • SKLearn学习总结

      2022-03-20

      #人工智能#SkLearn

    • 详细了解PyCharm支持的4种Python Interpreter和配置方法

      2022-03-02

      #Tools

    • Pycharm远程连接

      2022-02-26

      #Tools

    • JupyterLab学习总结

      2022-02-19

      #Tools#人工智能

    • Anaconda学习总结

      2022-02-13

      #Tools#人工智能

    • Ubuntu下安装lrzsz工具

      2022-02-08

      #Tools

    • 13-RNN

      2022-02-05

      #人工智能

    • 12-加速深度学习的算法和硬件-讲座

      2022-01-10

      #人工智能

    • 11-深度学习硬件算力基础-GPU与TPU与英特尔神经棒

      2021-12-26

      #人工智能

    • 10-经典卷积神经网络架构案例分析

      2021-12-16

      #人工智能

    • 9-迁移学习与fine-tuning

      2021-12-11

      #人工智能

    • 8-CNNS in Practice-卷积神经网络工程实践技巧

      2021-11-28

      #人工智能

    • 7-训练神经网络-下

      2021-11-09

      #人工智能

    • 6-训练神经网络-上

      2021-11-05

      #人工智能

    • 5-可视化并理解卷积神经网络

      2021-10-25

      #人工智能

    • 4-Convolutional-Neural-Networks

      2021-10-18

      #人工智能

    • 3-神经网络与反向传播

      2021-10-10

      #人工智能

    • 2-损失函数和梯度下降

      2021-09-25

      #人工智能

    • 1-KNN&线性分类器

      2021-09-20

      #人工智能

    • 0-机器学习基础

      2021-09-15

      #人工智能

    • 入门人工智能算法工程师-先来碗毒鸡汤

      2021-07-30

      #人工智能

    • 3-如何高效阅读机器学习顶会论文

      2021-07-15

      #论文

    • 2-论文ABC类与一二区的区别

      2021-06-10

      #论文

    • 1-学术小白

      2021-06-06

      #论文

    • 领域驱动设计在互联网业务开发中的实践

      2020-09-13

      #系统架构

    • 领域驱动设计

      2020-07-12

      #系统架构

    • DDD模式-从天书到实践

      2020-06-28

      #系统架构

    • DDD-马什么梅

      2020-06-14

      #系统架构

    • FaaS-又一个为未来

      2020-05-17

      #系统架构

    • 分布式ID的花拳绣腿

      2020-04-19

      #面试#系统架构#分布式

    • 4-Dockerfile上

      2020-04-08

      #Docker

    • 3-Docker存储卷

      2020-04-07

      #Docker

    • 2-Docker容器网络

      2020-04-06

      #Docker

    • 1-安装_使用Docker

      2020-04-05

      #Docker

    • 45-自增ID用完怎么办

      2020-03-11

      #MySql

    • 44-一些常见问题

      2020-03-09

      #MySql

    • 43-要不要使用分区表

      2020-03-08

      #MySql

    • 42-grant之后要跟着flush privileges吗

      2020-03-07

      #MySql

    • 41-如何最快的复制一张表

      2020-03-06

      #MySql

    • 40-insert语句的锁为什么这么多

      2020-03-04

      #MySql

    • 39-自增主键为什么不是连续的

      2020-03-03

      #MySql

    • 38-都说InnoDB好_那还要不要使用Memory引擎

      2020-03-02

      #MySql

    • 37-什么时候会使用内部临时表

      2020-03-01

      #MySql

    • SpringBoot_RabbitMQ配置参数详解

      2020-02-26

      #MQ

    • RabbitMQ安装

      2020-02-26

      #MQ

    • ELK日志平台-中

      2020-02-11

      #日志#ELK

    • ELK日志平台-上

      2020-02-10

      #日志#ELK

    • Java8新特性

      2020-02-08

      #Java

    • 1-Hystrix知多少

      2020-01-01

      #面试#Hystrix

    • 25-Nginx变量原理-应用

      2019-12-13

      #Nginx

    • 24-详解HTTP过滤模块

      2019-12-12

      #Nginx

    • 23-详解HTTP请求的11个阶段

      2019-12-11

      #Nginx

    • 22-如何找到处理请求的Server指令块

      2019-12-10

      #Nginx

    • 21-Nginx中的正则表达式

      2019-12-09

      #Nginx

    • 20-处理HTTP请求头部流程

      2019-12-09

      #Nginx

    • 19-Nginx中Listen指令用法

      2019-12-08

      #Nginx

    • 18-Nginx冲突的配置指令以谁为准

      2019-12-08

      #Nginx

    • 17-Nginx动态模块

      2019-12-07

      #Nginx

    • 16-Nginx容器

      2019-12-06

      #Nginx

    • 15-Worker集成协同工作的关键

      2019-12-06

      #Nginx

    • 14-Nginx连接池处理网络请求-内存池对性能的影响

      2019-12-05

      #Nginx

    • 13-Nginx模块

      2019-12-04

      #Nginx

    • 12-网络收发与Nginx事件模型

      2019-12-03

      #Nginx

    • 11-Nginx架构_相关流程

      2019-12-02

      #Nginx

    • LinkedHashMap实现原理_探险

      2019-11-28

      #Java#源码解析

    • HashTable实现原理_探险

      2019-11-22

      #Java#源码解析

    • HashMap实现原理_探险

      2019-11-20

      #Java#源码解析

    • LinkList实现原理_探险

      2019-11-17

      #Java#源码解析

    • ArrayList实现原理_探险

      2019-11-16

      #Java#源码解析

    • 10-OpenResty用Lua语言实现简单服务

      2019-11-12

      #Nginx

    • 9-SSL-Nginx

      2019-11-11

      #Nginx#SSL

    • 8-Nginx配置文件简易解析

      2019-11-10

      #Nginx

    • 7-Nginx安装详解

      2019-11-09

      #Nginx

    • 6-GoAccess实现可视化并实时监控access日志

      2019-11-08

      #Nginx#Tools#日志

    • 5-Nginx搭建具备缓存功能的反向代理

      2019-11-05

      #Nginx

    • 4-Nginx搭建静态资源Web服务器

      2019-11-01

      #Nginx

    • SpringBoot中jar为什么可以直接运行

      2019-10-30

      #面试#SpringBoot

    • SpringBoot全局异常处理

      2019-10-29

      #面试#SpringBoot

    • SpringBoot事件和监听器

      2019-10-29

      #面试#SpringBoot

    • SpringBoot启动原理

      2019-10-29

      #面试#SpringBoot

    • 36-为什么临时表可以重名

      2019-10-28

      #MySql

    • 35-join语句如何优化

      2019-10-27

      #MySql

    • 34-到底可不可以使用join

      2019-10-26

      #MySql

    • 33-我查这么多数据_会不会把数据库内存打爆

      2019-10-24

      #MySql

    • 32-为什么有kill不掉的语句

      2019-10-23

      #MySql

    • 31-误删数据后除了跑路_还能怎么办

      2019-10-22

      #MySql

    • 3-Nginx命令行演示-重载-热部署-切割

      2019-10-20

      #Nginx

    • 2-Nginx配置语法

      2019-10-17

      #Nginx

    • 1-Nginx的前世今生

      2019-10-15

      #Nginx

    • 0-Nginx访问日志配置及信息详解

      2019-10-11

      #Nginx

    • 分布式事务

      2019-09-19

      #面试#系统架构#分布式

    • 分布式锁

      2019-09-18

      #面试#系统架构#分布式

    • 分布式锁与事务

      2019-09-16

      #面试#系统架构#分布式

    • 数据结构与算法第四阶段学习图

      2019-09-16

      #算法

    • 数据结构与算法第三阶段学习图

      2019-09-16

      #算法

    • 数据结构与算法第二阶段学习图

      2019-09-16

      #算法

    • 数据结构与算法第一阶段学习图

      2019-09-16

      #算法

    • 2018-2019工作总结

      2019-09-15

      #搬砖结晶

    • 开发常见问题

      2019-09-14

      #Java

    • 52-算法实战(五)_如何用学过的数据结构和算法实现一个短网址系统

      2019-09-14

      #算法

    • 30-用动态的观点看加锁

      2019-09-13

      #MySql

    • 29-如何判断一个数据库是不是出问题了

      2019-09-12

      #MySql

    • 28-读写分离有哪些坑

      2019-09-11

      #MySql

    • 51-算法实战(四)_剖析微服务接口鉴权限流背后的数据结构和算法

      2019-09-09

      #算法

    • 50-算法实战(三)_剖析高性能队列Disruptor背后的数据结构和算法

      2019-09-06

      #算法

    • 49-算法实战(二)_剖析搜索引擎背后的经典数据结构和算法

      2019-09-02

      #算法

    • 27-主库出问题了_从库怎么办

      2019-08-29

      #MySql

    • 26-备库为什么会延迟好几个小时

      2019-08-28

      #MySql

    • 25-MySQL是怎么保证高可用的

      2019-08-27

      #MySql

    • 24-MySQL是怎么保证主备一致的

      2019-08-26

      #MySql

    • 48-算法实战(一)_剖析Redis常用数据类型对应的数据结构

      2019-08-25

      #算法

    • 47-并行算法_如何利用并行处理提高算法的执行效率

      2019-08-20

      #算法

    • 46-索引_如何在海量数据中快速查找某个数据

      2019-08-16

      #算法

    • 45-搜索_如何用A*搜索算法实现游戏中的寻路功能

      2019-08-13

      #算法

    • 44-B+树_MySQL数据库索引是如何实现的

      2019-08-10

      #算法

    • 43-向量空间_如何实现一个简单的音乐推荐系统

      2019-08-08

      #算法

    • 42-概率统计_如何利用朴素贝叶斯算法过滤垃圾短信

      2019-08-05

      #算法

    • 41-位图_如何实现网页爬虫中的URL去重功能

      2019-08-02

      #算法

    • 40-最短路径_地图软件是如何计算出最优出行路径的

      2019-07-28

      #算法

    • 39-拓扑排序_如何确定代码源文件的编译依赖关系

      2019-07-24

      #算法

    • 38-动态规划实战_如何实现搜索引擎中的拼写纠错功能

      2019-07-20

      #算法

    • 23-MySQL是如何保证数据不丢的

      2019-07-19

      #MySql

    • 22-MySQL有哪些“饮鸩止渴”提高性能的方法

      2019-07-18

      #MySql

    • 21-为什么我只改一行的语句_锁还这么多

      2019-07-17

      #MySql

    • 20-幻读是什么_幻读有什么问题

      2019-07-16

      #MySql

    • 19-只查一行的语句为何执行这么慢

      2019-07-15

      #MySql

    • 37-动态规划理论_一篇文章带你彻底搞懂最优子结结构_无后效性_重复子问题

      2019-07-13

      #算法

    • 36-初识动态规划_如何巧妙解解决“双十一”购物时的凑单问题

      2019-07-09

      #算法

    • 35-回溯算法_从电影《蝴蝶效应》中学习回溯算法的核心思想

      2019-07-06

      #算法

    • 34-分治算法_谈一谈大规模计算框架MapReduce中的分治思想

      2019-07-04

      #算法

    • 33-贪心算法_如何用贪心算法实现Huffman压缩编码

      2019-07-01

      #算法

    • 32-AC自动机_如何用多模式串匹配实现敏感词过滤功能

      2019-06-25

      #算法

    • 18-SQL语句逻辑相同_性能却为何差异巨大

      2019-06-23

      #MySql

    • 17-如何正确的显示随机消息

      2019-06-22

      #MySql

    • 16-MySQL中order by是如何工作的

      2019-06-20

      #MySql

    • 15-日志和索引有关问题

      2019-06-18

      #MySql

    • RocketMQ探索

      2019-06-17

      #MQ

    • 14-count(\*)为什么这么慢

      2019-06-16

      #MySql

    • 13-为什么表数据删掉一半而表文件大小不变

      2019-06-15

      #MySql

    • 12-为什么我的MySQL会“抖”一下

      2019-06-13

      #MySql

    • 11-怎么给字符串字段加索引

      2019-06-12

      #MySql

    • 10-MySQL为什么有时候会选错索引

      2019-06-11

      #MySql

    • 3-3-Docker容器用法

      2019-06-10

      #Docker

    • RabbitMQ详解

      2019-06-08

      #MQ

    • 5-分布式会话_锁_事务_高并发系统设计

      2019-06-07

      #面试

    • 3.2-Docker镜像用法

      2019-06-05

      #Docker

    • 4-Zookeeperer使用场景

      2019-06-04

      #面试

    • Dubbo知多少

      2019-06-03

      #面试#Dubbo

    • 3-分布式系统中接口调用顺序性如何保证

      2019-06-03

      #面试#Dubbo

    • 2-分布式系统中接口的幂等性该如何保证_比如不能重复扣款

      2019-06-02

      #面试#Dubbo

    • 1-分布式系统连环炮_Dubbo有关知识点

      2019-06-01

      #面试#Dubbo

    • 9-普通索引和唯一索引如何选择

      2019-05-30

      #MySql

    • 8-事务到底是隔离的还是不隔离的

      2019-05-29

      #MySql

    • 7-行锁功过_怎么减少行锁对性能的影响

      2019-05-28

      #MySql

    • 6-全局锁和表锁_给表加个字段怎么有这么多阻碍

      2019-05-27

      #MySql

    • 5-深入浅出索引(下)

      2019-05-26

      #MySql

    • 4-深入浅出索引(上)

      2019-05-25

      #MySql

    • 3.1-Docker用法

      2019-05-24

      #Docker

    • 2.2-Docker启动报错

      2019-05-23

      #Docker

    • 3-事务隔离_为什么你改了我还看不见

      2019-05-21

      #MySql

    • MySQL重要日志

      2019-05-20

      #面试#MySql

    • 2-日志系统_一条SQL更新语句是如何执行的

      2019-05-20

      #MySql

    • 1-基础架构_一条SQL查询语句是如何执行的

      2019-05-19

      #MySql

    • 2.1-Docker安装与部署

      2019-05-18

      #Docker

    • 1-Docker缘由

      2019-05-12

      #Docker

    • 0-Docker配置国内免费registry_mirror

      2019-05-08

      #Docker

    • 5-分布式搜索引擎如何部署

      2019-04-26

      #Elasticsearch#面试

    • 4-ES如何在几十亿数据场景下优化查询性能

      2019-04-23

      #Elasticsearch#面试

    • 3-ES读写数据的工作原理

      2019-04-22

      #Elasticsearch#面试

    • 2-分布式搜索引擎的架构是如何设计的

      2019-04-21

      #Elasticsearch#面试

    • 1-面试官对分布式搜索引擎的4个连环炮

      2019-04-20

      #Elasticsearch#面试

    • 8-如何设计一个消息队列

      2019-04-10

      #面试#MQ

    • 7-消息队列如何解决延迟_过期失效_积压消息等问题

      2019-04-10

      #面试#MQ

    • JWT学习

      2019-04-09

      #Java#Jwt

    • 6-消息队列如何保证消息的顺序性

      2019-04-08

      #面试#MQ

    • 5-消息队列如何保证可靠性传输(消息丢了怎么办)

      2019-04-07

      #面试#MQ

    • 4-消息队列消费到重复数据怎么办

      2019-04-06

      #面试#MQ

    • 3-消息队列如何保证高可用性

      2019-04-03

      #面试#MQ

    • 2-消息队列引入原原因_优缺点_应用场景_技术选型

      2019-04-02

      #面试#MQ

    • 1-面试官对消息队列的10个连环炮

      2019-04-01

      #面试#MQ

    • Git常见200+条命令

      2019-03-28

      #Git

    • 8-GitLab简单操作

      2019-03-25

      #Git

    • 31-Trie树_如何实现搜索引擎的搜索关键词提示功能

      2019-03-12

      #算法

    • 7-基于GitHub进行团队协作

      2019-03-09

      #Git

    • 30-字符串匹配基础下_如何借助BM算法轻松理解KMP算法

      2019-03-06

      #算法

    • 29-字符串匹配基础中_如何实现文本编辑器中的查找功能

      2019-03-03

      #算法

    • 28-字符串匹配基础上_如何借助哈希算法实现高效字符串匹配

      2019-03-01

      #算法

    • 6-GitHub的认识与使用

      2019-02-25

      #Git

    • 5-Git集成使用禁忌

      2019-02-15

      #Git

    • 27-深度和广度优先搜索_如何找出社交网络中的三度好友关系

      2019-02-13

      #算法

    • 26-图的表示_如何存储微博微信等社交网络中的好友关系

      2019-02-10

      #算法

    • 国内地图坐标系转换

      2019-02-08

      #地图坐标转换

    • 4-Git多人单分支集成协作时的常见场景

      2019-02-08

      #Git

    • 微服务架构-下篇

      2019-02-06

      #系统架构

    • 微服务架构-中篇

      2019-02-03

      #系统架构

    • 微服务架构-上篇

      2019-02-01

      #系统架构

    • Python数据分析工具

      2019-01-30

      #Python

    • Python高级篇

      2019-01-29

      #Python

    • Python中级篇_下

      2019-01-28

      #Python

    • Python中级篇_上

      2019-01-27

      #Python

    • Python初级篇

      2019-01-26

      #Python

    • Python前世今生

      2019-01-25

      #Python

    • 源码分析-MyBatis数据源与连接池

      2019-01-23

      #MyBatis

    • MyBatis初始化做了什么

      2019-01-21

      #MyBatis

    • 3-Git与GitHub简单同步

      2019-01-20

      #Git

    • 2-Git常用场景

      2019-01-18

      #Git

    • 1-Git安装及简单操作

      2019-01-15

      #Git

    • SpringCloud探索与实战

      2019-01-13

      #SpringCloud

    • MyBatis架构与原理

      2019-01-09

      #MyBatis

    • MyBatis原理概括

      2019-01-08

      #MyBatis

    • MyBatis多数据源配置

      2019-01-07

      #MyBatis

    • JVM(八):Jvm知识点概览

      2019-01-06

      #Jvm

    • JVM(七):Jvm调优-工具

      2019-01-05

      #Tools#Jvm

    • JVM(六):Java服务GC参数调优案例

      2019-01-03

      #Jvm

    • JVM(五):GC分析

      2019-01-02

      #Jvm

    • JVM(四):Jvm调优-命令

      2019-01-01

      #Jvm

    • JVM(三):GC算法_垃圾收集器

      2019-01-01

      #Jvm

    • 25-堆的应用_如何获取Top10最热门的搜索关键词

      2018-12-30

      #算法

    • 24-堆和堆排序_为什么说堆排序没有快速排序快

      2018-12-29

      #算法

    • 23-递归树_如何借助树来求解递归算法的时间复杂度

      2018-12-27

      #算法

    • 22-红黑树下_实现红黑树的技巧

      2018-12-25

      #算法

    • 21-红黑树上_为什么工程中都用红黑树这种二叉树

      2018-12-23

      #算法

    • 应用架构演变过程

      2018-12-20

      #Photo

    • MyBatis常用插件

      2018-12-14

      #MyBatis

    • JVM(二):Jvm内存结构

      2018-12-11

      #Jvm

    • JVM(一):Java类加载机制

      2018-12-10

      #Jvm

    • Map-Reduce学习

      2018-11-20

      #BigData

    • 20-二叉树基础下_有了如此高效的散列表—_为什么还需要二叉树

      2018-11-18

      #算法

    • 19-二叉树基础上_什么样的二叉树适合用数组来存储

      2018-11-16

      #算法

    • 18-哈希算法下_哈希算法在分布式系统中有哪些应用

      2018-11-15

      #算法

    • 17-哈希算法上_如何防止数据库中的用户信息被脱库

      2018-11-13

      #算法

    • Hadoop学习

      2018-11-10

      #BigData

    • 16-散列表下_为什么散列表和链表经常一起使用

      2018-11-09

      #算法

    • 15-散列表中_如何打造一个工业级水平的散列表

      2018-11-09

      #算法

    • 14-散列表上_Word文档中的单词拼写检查功能如何实现

      2018-11-08

      #算法

    • 13-跳表_为什么Redis一定要用跳表来实现有序集合

      2018-11-06

      #算法

    • 12-二分查找下_如何快速定位IP对应的省份地址

      2018-11-04

      #算法

    • 11-二分查找上_如何用最省内存的方式实现快速查找功能

      2018-11-02

      #算法

    • 10-排序优化_如何实现一个通用的高性能的排序函数

      2018-11-01

      #算法

    • 9-线性排序_如何根据年龄给100万用户数据排序

      2018-10-28

      #算法

    • 8-排序下_如何用快排思想在O(n)内查找第K大元素

      2018-10-24

      #算法

    • 7-排序上_为什么插入排序比冒泡排序更受欢迎

      2018-10-22

      #算法

    • 6-递归_如何用三行代码找到最终推荐人

      2018-10-20

      #算法

    • 高性能队列-Disruptor

      2018-10-18

      #MQ#Java

    • 5-队列_队列在线程池等有限资源池中的应用

      2018-10-16

      #算法

    • 4-栈_如何实现浏览器的前进和后退功能

      2018-10-13

      #算法

    • Quartz学习

      2018-10-09

      #Java#定时任务#Quartz

    • 3-链表下_如何轻松写出正确的链表代码

      2018-10-06

      #算法

    • 2-链表上_如何实现LRU缓存淘汰算法

      2018-10-06

      #算法

    • 1-数组_为什么很多编程语言中数组都从0开始编号

      2018-10-02

      #算法

    • 复杂度分析-下部

      2018-09-29

      #算法

    • 复杂度分析-上部

      2018-09-28

      #算法

    • 数据结构与算法概览

      2018-09-26

      #算法

    • 请求与响应

      2018-09-17

      #HTTP

    • TextRank基本了解

      2018-09-01

      #算法

    • (5)Hexo踩坑_主题优化

      2018-08-21

      #Hexo-yilia

    • (4)Hexo撰写文章

      2018-08-19

      #Hexo-yilia

    • (3)Hexo常用命令详解

      2018-08-19

      #Hexo-yilia

    • (2)Hexo配置文件详解

      2018-08-17

      #Hexo-yilia

    • 关于Firewalld二三事

      2018-08-15

      #Linux

    • (1)Hexo博客搭建

      2018-08-11

      #Hexo-yilia

    • 修改Vim_tab为4个空格

      2018-08-06

      #Linux

    • CentOs7防火墙开端口测试

      2018-08-01

      #Linux

    • 10-Redis的并发竞争问题及生产环境集群部署架构

      2018-07-30

      #面试#Redis

    • 9-如何保证缓存与数据库双写时的数据一致性

      2018-07-29

      #面试#Redis

    • 8-如何应对缓存雪崩及穿透问题

      2018-07-28

      #面试#Redis

    • 7-Redis集群模式原理

      2018-07-26

      #面试#Redis

    • Redis所需安装包及各种依赖

      2018-07-25

      #Redis

    • 6-Redis挂掉重启后数据如何进行恢复

      2018-07-24

      #面试#Redis

    • 5-Redis高并发高可用有关问题

      2018-07-21

      #面试#Redis

    • 4-Redis过期策略_手写LRU

      2018-07-19

      #面试#Redis

    • 3-Redis常用数据类型及使用场景

      2018-07-18

      #面试#Redis

    • 2-Redis线程模型_单线程效率高的原因

      2018-07-17

      #面试#Redis

    • 1-项目中缓存如何使用

      2018-07-16

      #面试#Redis

    • AWK三剑客

      2018-07-15

      #Linux

    • Maven插件-assembly插件基本使用

      2018-06-28

      #Java#Maven

    • Maven知多少

      2018-06-27

      #Java#Maven

    • 1-分库分表知多少

      2018-06-25

      #面试#MySql

    • MySQL基本用法

      2018-06-21

      #MySql

    • MySQL安装

      2018-06-20

      #MySql

    • Swagger2学习与集成

      2018-05-20

      #SpringBoot#Swagger2

    • SpringBoot面试

      2018-05-16

      #面试#SpringBoot

    • SpringBoot+Docker简单配置

      2018-05-15

      #Docker#SpringBoot

    • Java定时任务

      2018-05-13

      #Java#定时任务

    • Netty知多少

      2018-05-05

      #网络编程

    • Java编程瞎侃

      2018-04-18

      #Java

    • Vim常用操作

      2018-03-25

      #Linux

    • Linux定时任务Crontab详解

      2018-03-23

      #Linux

    • Linux常用插件及乱码

      2018-03-20

      #Linux

    • Linux安装常用软件

      2018-03-19

      #Linux

    • Idea常用插件及个性化配置

      2018-03-18

      #Tools#IDEA

    • Host-Vm相互ping不同到的解决办法

      2018-03-16

      #Linux

    • GitHub
    • 廖雪峰
    • 纯洁的微笑
    • 我没有三颗心脏
    • 阿里巴巴开源镜像网站
    一个脱离了高级趣味的人!