图像处理是图像识别过程中重要一环,一张图像可能包括海量的不明确的信息,图像处理的目的是消除图像中无关的信息,恢复有用的真实信息,增强有效信息的可检测性,最大限度地简化数据。

参考知乎文章链接:https://zhuanlan.zhihu.com/p/547096645

主要学习图像处理的一些手段和方法

1、图像灰度化

图像灰度化指以黑色为基准色,用不同亮度的黑色来显示图像,通常为从0%(白色)到100%(黑色)的亮度值。图像灰度化可以将彩色图转换为灰度图。

在RGB模型中,R=G=B时表示为灰度颜色,其中R=G=B的值叫灰度值。在下图中,立方体中的虚线即为R=G=B时的灰度颜色。R=G=B=0时,灰度值为0,颜色为黑色;R=G=B=255时,灰度值为255,颜色为白色。

2、图像二值化

图像二值化是一种特殊的灰度化,就是将灰度值设置为0或255,也就是整个图像非黑即白。图像二值化的目的是尽可能的去除干扰信息,获取目标信息。一般会先将图片灰度化,再进行二值化。

图像二值化最常使用的方法是设定一个全局的阈值 T ,用 T 将图像分割为两类像素:大于 T 的像素群和小于 T 的像素群,然后将两类像素群分别设定为白色或黑色。这种方法称为固定阈值法。

3、图像的按位逻辑运算

图像的按位逻辑运算就是将两幅图的每个像素进行按位逻辑运算,简称位运算。

常见的位运算有4种:按位与、按位或、按位异或、按位取反  具体介绍可参考:https://www.cnblogs.com/Zhouce/p/17859435.html

(1)按位与运算,用 and 表示按位与运算,1表示真,0表示假。

将任何数值N(范围0-255)与数值0(二进制为0000 0000)进行按位与运算,都会得到数值0。

将任何数值N(范围0-255)与数值255(二进制为1111 1111)进行按位与运算,都会得到数值本身。

(2)按位或运算,用 or 表示按位或运算,两个逻辑值只要有一个为真时,结果就为真。

(3)按位非运算,用 not 表示按位非运算,当输入为真时,结果为假;当输入为假时,结果为真。

(4)按位异或运算,用 xor 表示按位异或运算,两个逻辑值相反时,结果才为真。

彩图中,每个像素以(R,G,B)值表示,位运算时,先将R、G、B值转换为二进制值,然后做位运算。比如,像素1(0,198,219)与像素2(198,219,1)进行按位异或运算时,先将所有数值转换成二进制数,如下表。

像素 十进制值 二进制值
像素1-R 0 0000 0000
像素1-G 198 1100 0110
像素1-B 219 1101 1011
像素1-R 198 1100 0110
像素1-G 219 1101 1011
像素1-B 1 0000 0001

需要注意的是,必须是尺寸一致的图像才能进行位运算。如果两张图片尺寸不一致,可以先剪裁成同一尺寸,再做位运算。

4、图像掩膜

简单来说,掩膜是用一幅二值化图片对另外一幅图片进行局部的遮挡,一般将二值化图称为掩模图像。

比如下图中,用左边的二值化图对中间的彩图进行掩模,掩模的结果如右图所示。

5、在Opencv中图像的按位逻辑运算

常见的4种图像按位逻辑运算在opencv库中可分别通过“cv2.bitwise_and()”、“cv2.bitwise_or()”、“cv2.bitwise_xor()”、“cv2.bitwise_not()”四个函数来实现。

以按位与运算为例:

1 color =  np.zeros((320, 240, 3),dtype=np.uint8) # 创建一个三维零矩阵,类型为uint8
2 color[:,:,0] = 12 # B # 遍历所有行,遍历所有列,赋值蓝色通道的值为12
3 color[:,:,1] = 12 # G # 遍历所有行,遍历所有列,赋值蓝色通道的值为12
4 color[:,:,2] = 12 # R # 遍历所有行,遍历所有列,赋值蓝色通道的值为12
5 mask = cv2.inRange(hsv, lower, upper) # 色彩阈值化所得图
6 B2 = cv2. bitwise_and(color,color, mask=mask) # 按位与运算

其中,“color”指的是原图,“mask”是另一张图,B2是先将两张原图进行与运算,再将得到的图与mask图进行与运算,最终得到的图。

Opencv学习笔记(2)的更多相关文章

  1. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  2. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  3. opencv学习笔记(五)镜像对称

    opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...

  4. opencv学习笔记(四)投影

    opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...

  5. opencv学习笔记(三)基本数据类型

    opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...

  6. opencv学习笔记(二)寻找轮廓

    opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...

  7. opencv学习笔记(一)IplImage, CvMat, Mat 的关系

    opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...

  8. paper 93:OpenCV学习笔记大集锦

    整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...

  9. (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...

  10. OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波

    http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...

随机推荐

  1. nodejs中如何使用http创建一个服务

    http模块是nodejs中非常重要的一部分,用于开启一个服务,我们可以用它自定义接口供客户端使用.   开启服务的方式也比较简单,几行代码就可以搞定 const http = require('ht ...

  2. 8 最全的零基础Flask教程

    最全的零基础Flask教程 1 Flask介绍 1.1 为什么要使用Flask Django和Flask是Python使用最多的两个框架 1.2 Flask是什么 Flask诞生于2010年,是Arm ...

  3. 【go笔记】标准库-strings

    标准库-strings 前言 标准库strings用于处理utf-8编码的字符串. 字符串比较-Compare func Compare(a,b string) int 若 a==b ,则返回0:若 ...

  4. javescript入门

    js组成和基本结构 javascript缘由:可以实现html,css初级验证实现不了的复杂的验证 减轻服务器压力(在发送请求到服务器之前用javescript验证客户端) w3c标准:结构化(htm ...

  5. [PWN之路]栈溢出那些事儿

    前言 如果入门,想要学习栈溢出相关知识欢迎参考hash_hash的入门文章和我的集训wp,按照buuctf的题目一点一点做,不会的搜索到网上,并且及时在论坛发帖总结和交流.并且这里贴上一个不错的教程, ...

  6. 【技术积累】Docker部署笔记

    服务器环境搭建 nacos镜像 使用宝塔Docker管理器直接拉起nacos环境并运行 注意:在同一台服务器中,nacos只对内网才能注册,图中172.17.0.2是内网地址,在多台服务器中需要跨ip ...

  7. ESP32C3 LEDC_PWM

    LEDC_PWM    LED 控制器 (LEDC) 主要用于控制 LED,也可产生 PWM 信号用于其他设备的控制,ESP32C3有 6 路通道.设置 LEDC 通道分三步完成.与 ESP32 不同 ...

  8. AI测试,给出的答案还挺那么回事儿的~

    今天文心一言全民开放了,所有人都可以正常下载使用了,不用像之前一样排队等号了.之前内测阶段倒也体验过,技术人员总是喜欢尝鲜,第一时间拿到邀请码后就各种调戏了TA一番,那时觉得给出的答案总有些差强人意, ...

  9. 小札 Maximum Weight Closure of a Graph

    1. Introduction    Define a closure of a directed graph \(G=(V,E)\) as an induced set of vertexes of ...

  10. HOMER7配置告警

    概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具. HOMER是一款强大的.运营商级.可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应 ...