图像卷积:利用2D卷积核去扫图像,主要是为了实现Blur,高斯滤波本质也是通过卷积来实现的,只不过他的卷积核内参数是符合高斯分布的。

图像二值化:图像二值化之后为黑白图像,相当于mask掩模,用于挖出图像中的非规则感兴趣ROI区域。

图像分割:本文主要说的是传统方法的分割,主要是基于灰度图像的直方图统计,选取阈值,进行分割。

实现:我们会用到的工具有 python ,matplotlib,opencv进行接下来的任务

1、读取图像

img=cv2.imread('/mnt/disk2/oujie/107L2ZEWVQFI2($_Z4F{(]D.png')
plt.figure(figsize=(15,10))
plt.imshow(cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2RGB))
plt.show()

2、原图灰度化并选取ROI区域

img_gray=cv2.cvtColor(img.astype(np.uint8), cv2.COLOR_BGR2GRAY)
img_roi=img_gray[150:520,380:800]###################显示
plt.figure(figsize=(15,10))
plt.imshow(img_gray, cmap ='gray')
plt.show()plt.figure(figsize=(15,10))
plt.imshow(img_roi, cmap ='gray')
plt.show()

3、利用直方图对ROI区域进行 “响应灰度值”统计,这里主要用numpy的直方图接口

img_roi_blur=cv2.GaussianBlur(img_roi,(5,5),0)
plt.figure(figsize=(15,10))
plt.imshow(img_roi_blur, cmap ='gray')
plt.show()
img_roi_data=img_roi_blur.flatten()#把数据转换成一维的
plt.figure(figsize=(15,10))
n, bins, patches = plt.hist(img_roi_data, bins=255, alpha=1)#为了显示出来用的plt接口
#numpy用法hist1=np.histogram(img_roi_data, bins=255)
plt.show()

4、选取阈值进行二值化,阈值选择主要是该类灰度值,数量多,我们选择120,要是想选择多个条件,可以结合numpy的逻辑运算

img_mask=np.zeros((img_gray.shape))
img_gray_blur=cv2.GaussianBlur(img_gray,(5,5),0)  #滤波可以减少噪声带来的影响
#img_mask[np.where(np.logical_and(img_gray>85,img_gray<120))]=255
img_mask[np.where(img_gray_blur>120)]=255
plt.figure(figsize=(15,10))
plt.imshow(img_mask, cmap ='gray')
plt.show()

5、利用mask扣出原图

记得一定要把得到的mask进行数据类型转化,uint8,或者支持的其他类型

img_result=cv2.bitwise_and(img,img,mask=img_mask.astype(np.uint8))
plt.figure(figsize=(15,10))
plt.imshow(cv2.cvtColor(img_result, cv2.COLOR_BGR2RGB))
plt.show()

6、二值化部分也可以用别的办法进行,比如动态阈值(大津法OTSU)

【计算机视觉】-图像二值化 - 图像分割 -图像卷积相关推荐

  1. C#,图像二值化(13)——全局阈值的双峰平均值算法(Bimodal Thresholding)与源程序

    1.图像二值化概述 图像二值化是将彩色图像转换为黑白图像.大多数计算机视觉应用程序将图片转换为二进制表示.图像越是未经处理,计算机就越容易解释其基本特征. 二值化过程 在计算机存储器中,所有文件通常以 ...

  2. 二值化图像的欧拉数_Android OpenCV(八):图像二值化

    图像二值化 简介 图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程.在数字图像处理中,二值图像占有非常重要的 ...

  3. OpenCV学习笔记(三)——图像像素(图像的最大(小)值、均值、标准差、比较运算、逻辑运算、图像二值化)

    目录 1 图像像素统计 1.1 图像像素的最大值和最小值 1.2 计算图像的均值和标准差 2 两图像间的像素操作 2.1 比较运算 2.2 逻辑运算 3 图像二值化 1 图像像素统计 数字图像可以用大 ...

  4. 论文推荐|【KSII TIIS 2021】DP-LinkNet:一种用于古籍文档图像二值化的卷积网络(有源码)...

    今日分享来自[KSII TIIS 2021]的论文『DP-LinkNet: A convolutional network for historical document image binariza ...

  5. opencv 图像分割 阈值分割 图像二值化 灰度图

    # -*- coding: utf-8 -*- """ @File : 191213_测试_阈值分割.py @Time : 2019/12/13 15:14 @Autho ...

  6. 设图像为 f=[1 5 25 10 20 20] 谷峰法 二值化 图像分割

    峰谷法 二值化 图像分割 峰谷法主要是在找谷底(Th),也就是阈值 先做道例题 画出灰度直方图,找到两个谷底Th1.Th2 用图片测试一下 clear clc f=imread('1.jpg'); f ...

  7. 图像二值化中阈值算法浅析

    目录 什么是二值化 常见的求阈值算法 OSTU大津法 概念及原理 iteration迭代法 概念及原理 代码实现 Sobel算子图像边缘提取 概念及原理 代码实现 噪点过滤 什么是二值化 所谓图像二值 ...

  8. 一文搞懂图像二值化算法

    传统的机器视觉通常包括两个步骤:预处理和物体检测.而沟通二者的桥梁则是图像分割(Image Segmentation)[1].图像分割通过简化或改变图像的表示形式,使得图像更易于分析. 举个例子,食品 ...

  9. OpenCV机器视觉-图像二值化

    图像二值化 图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程. 在数字图像处理中,二值图像占有非常重要的地位 ...

最新文章

  1. 【AI】【机器人】AI与机器人的42个终极问题与解答
  2. 标准化条件变量 -- condition_variable
  3. AS 自定义 Gradle plugin 插件 案例 MD
  4. spring学习(37):注入list类型
  5. springboot 2.0 配置 logback
  6. 从入门到入土:[SEED-Lab]MD5碰撞试验|MD5collgen实验|linux|Ubuntu|MD5 Collision Attack Lab|详细讲解
  7. 蓝桥杯2019年第十届C/C++省赛B组第一题-组队
  8. python docx 表格样式修改 Package not found at ‘*.docx‘; “no style with name ‘Table Grid‘“
  9. E-96系列电阻值代号对照表
  10. react中使用swiper
  11. pre-trained模型的使用
  12. dubbo工程结构分析
  13. 程序员辛酸泪——当程序员老去,程序员又何去何从
  14. 个人千元奖励!华秋PCB多层板设计挑战赛等您参与
  15. jetson nano初探2——风扇
  16. 域自适应的理解(简单易懂)
  17. sap exceptions处理
  18. getElementByClassName
  19. Pycharm中怎么给字典中的多个键-值对同时加上单引号
  20. 生信分析流程框架概述

热门文章

  1. 使用pcl将bin文件转化为pcd文件
  2. 【转载】使用花生壳5.0在自己电脑上搭建FTP服务器
  3. 下一代防火墙 决胜于应用层
  4. 图像分类中的对抗鲁棒性
  5. 百度地图实时路况数据爬取
  6. 【矩阵快速幂】233 Matrix HDU - 5015
  7. DDR4, DDR3, DDR2, DDR1 及SDRAM各有何不同?
  8. js+++++++++++++=
  9. Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别
  10. 安徽大学计算机科学与技术考研科目,2019安徽大学计算机考研初试科目、参考书目、招生人数...