____tz_zs

二值图像

二值图像(Binary Image),按名字来理解只有两个值,0和1,0代表黑,1代表白,或者说0表示背景,而1表示前景。其保存也相对简单,每个像素只需要1Bit就可以完整存储信息。如果把每个像素看成随机变量,一共有N个像素,那么二值图有2的N次方种变化,而8位灰度图有255的N次方种变化,8为三通道RGB图像有255*255*255的N次方种变化。也就是说同样尺寸的图像,二值图保存的信息更少。二值图像(binary image),即图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。

灰度图像

灰度图像是二值图像的进化版本,是彩色图像的退化版,也就是灰度图保存的信息没有彩色图像多,但比二值图像多,灰度图只包含一个通道的信息,而彩色图通常包含三个通道的信息,单一通道的理解可以理解为单一波长的电磁波,所以,红外遥感,X断层成像等单一通道电磁波产生的图像都为灰度图,而且在实际中灰度图易于采集和传输等性质的存在导致基于灰度图像开发的算法非常丰富。

灰度图像(gray image)是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;但是,灰度图像在黑色与白色之间还有许多级的颜色深度。灰度图像经常是在单个电磁波频谱如可见光内测量每个像素的亮度得到的,用于显示的灰度图像通常用每个采样像素8位的非线性尺度来保存,这样可以有256级灰度(如果用16位,则有65536级)。 

彩色图像

彩色图像,每个像素通常是由红(R)、绿(G)、蓝(B)三个分量来表示的,分量介于(0,255)。

彩色图像的灰度化、二值化

·
# -*- coding: utf-8 -*-
"""
@author: tz_zs
彩色图像的灰度化、二值化
"""
from skimage import io
from skimage.color import rgb2gray
import numpy as np
import matplotlib.pyplot as pltimg = io.imread("53788-106.jpg")  # (1080, 1920, 3)
io.imshow(img)
io.show()
print(img)
'''
[[[255 255 255][255 255 255][255 255 255]..., [217 224 234][217 224 234][217 224 234]]..., [[188 165 131][195 175 140][186 166 131]..., [163 138 108][156 131 101][153 128  98]]]
'''# 灰度化
img_gray = rgb2gray(img)  # (1080, 1920)
io.imshow(img_gray)
io.show()
print(img_gray)
'''
[[ 1.          1.          1.         ...,  0.87542549  0.875425490.87542549][ 1.          1.          1.         ...,  0.85973922  0.859739220.85973922][ 1.          1.          1.         ...,  0.86366078  0.863660780.86366078]..., [ 0.64347137  0.6277851   0.71405961 ...,  0.66333137  0.679017650.7103902 ][ 0.57931961  0.62637843  0.70286039 ...,  0.6594098   0.624115690.60450784][ 0.65661216  0.6930451   0.65775098 ...,  0.55352745  0.526076470.51431176]]
'''# 二值化
# rows, cols = img_gray.shape
# for i in range(rows):
#     for j in range(cols):
#         if (img_gray[i, j] <= 0.5):
#             img_gray[i, j] = 0
#         else:
#             img_gray[i, j] = 1img_binary = np.where(img_gray >= 0.5, 1, 0)  # (1080, 1920)
print(img_binary)
'''
[[1 1 1 ..., 1 1 1][1 1 1 ..., 1 1 1][1 1 1 ..., 1 1 1]..., [1 1 1 ..., 1 1 1][1 1 1 ..., 1 1 1][1 1 1 ..., 1 1 1]]
'''io.imshow(img_binary)
io.show()
# plt.imshow(img_binary)
# plt.show()

·

·

·

灰度图的显示

·

# -*- coding: utf-8 -*-
"""
@author: tz_zs灰度图的显示情况
"""
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image'''
img = Image.open('53788-106.jpg')
print(img)  # <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1920x1080 at 0x16BECF00898>
img = np.array(img)
'''
img = plt.imread('53788-106.jpg')
print(img)
'''
[[[255 255 255][255 255 255][255 255 255]..., ..., [163 138 108][156 131 101][153 128  98]]]
'''plt.figure(1)  # 第一个figureplt.imshow(img)
if img.ndim == 3:img = img[:, :, 0]
print(img)
'''
[[255 255 255 ..., 217 217 217][255 255 255 ..., 213 213 213][255 255 255 ..., 214 214 214]..., [181 177 199 ..., 191 195 203][166 178 196 ..., 190 181 176][188 195 186 ..., 163 156 153]]
'''plt.figure(2)  # 第二个figureplt.subplot(221)
plt.imshow(img)  # 一般显示的情况下,显示为热力图
plt.subplot(222)
plt.imshow(img, cmap='gray')  # 灰度图正确的表示方法1
plt.subplot(223)
plt.imshow(img, cmap=plt.cm.gray)  # 灰度图正确的表示方法2
plt.subplot(224)
plt.imshow(img, cmap=plt.cm.gray_r)  # 黑白反转
plt.show()

·

·

·

很多图片识别为什么将彩色图像灰度化?

https://www.zhihu.com/question/24453478

截取:

  • 我们识别物体,最关键的因素是梯度(现在很多的特征提取,SIFT,HOG等等本质都是梯度的统计信息),梯度意味着边缘,这是最本质的部分,而计算梯度,自然就用到灰度图像了。颜色本身,非常容易受到光照等因素的影响,同类的物体颜色有很多变化。所以颜色本身难以提供关键信息。
  • 大多数的医学图像RGB提供的信息量很少(几乎没有),所以可以直接灰度图像来进行后续计算。在这些问题上,反而对灰度图像预处理更重要(当然,CNN发展以后这些预处理作用也小了)。
  • 灰度化之后颜色信息丢失,很多color-based算法就不可能这么做,但是很多简单的识别算法对于颜色的依赖性不强,hand-craft特征更多关注边缘梯度信息。工程中很多应用加上color信息之后鲁棒性会下降。灰度化之后矩阵维数下降,运算速度大幅度提高,并且梯度信息仍然保留。

二值图像、灰度图像、彩色图像相关推荐

  1. OpenCV BGR RGB 灰度图像 彩色图像

    OpenCV OpenCV是英特尔在1999年成立的, 当时主流的摄像头制造商和软件供应商提供的摄像头采集的图像的通道排列顺序为BGR,位图BMP是最简单的,也是Windows显示图片的基本格式,其文 ...

  2. 将cityscapes数据集Mask二值图像变为彩色图像

    在语义分割时,为了方便可视化,需要将表示类别的灰度图,根据类别-颜色映射表,转换为彩色图 转到 在数据量较大的情况下,使用逐像素遍历的方法速度极慢,使用矩阵.向量的操作方法可以极大提高运行速度 以GI ...

  3. 机器人视觉——图像读入、显示与保存

    图片处理 1. 读入图像 2. 显示图像 3. 保存图像 图像是由像素构成的 图像分类: 二值图像 灰度图像 彩色图像 像素处理 1.读取像素 2.修改像素值

  4. 第二章:图像处理基础

    第二章:图像处理基础操作 一.图像的基本表示方法: 1. 二值图像: 2. 灰度图像: 3. 彩色图像: 二.像素处理: 1. 二值图像及灰度图像: 2.彩色图像: 3. 使用numpy.array访 ...

  5. OpenCV(二)OpenCV的介绍和发展

    1.What is Computer Vision? Goal of computer bision is to write computer programs that can interpret ...

  6. matlab数字图像处理库,MATLAB06:数字图像处理

    学习一门技术最好的方式就是阅读官方文档,可以查看MATLAB官方文档 图像的读取和展示 图像在MATLAB中的存储格式 MATLAB能够处理的数字图像分为三种:二值图像,灰度图像,彩色图像. 二值图像 ...

  7. matlab图像转为灰度,matlab怎么读取一幅图像,并转换为灰度图像

    matlab 用rgb2gray 将彩色图像转换为灰度图像 >> I=imread('D:\Lena.jpg'); >> x=rgb2gray(I); >> fig ...

  8. opengl实现3d点云_3D视觉CV界的终极体现形式,计算机如何「看」这个三维世界

    机器之心原创 作者:陈萍 打开手机进行人脸解锁:VR.AR 技术带来如此虚拟却真实的场景--3D 视觉几乎无所不能,在智能家居.智能安防.汽车电子.工业测量.新零售.智能物流等领域发挥重要作用,堪称赋 ...

  9. python --- opencv部分学习

    1. OpenCV 1.1 opencv概念 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库 可以运行在Linux.Windows.Android和Mac OS操作系统上 它轻量级而 ...

  10. 图像处理中涉及的灰度图、彩色图以及深度图概念

    图像处理中涉及最多的概念就是图像的类型,为了很好的理解图像的概念以及处理图片,我们就需要对常见的图像具有一定的概念. 我们首先介绍一下生活中常见的图像格式: 1.bmp格式:这是一种不常见的图像格式, ...

最新文章

  1. 【ACM】杭电OJ 1106 函数atoi
  2. AR的平面检测和利用SceneKit构建几何体
  3. js鼠标移动到指定位置_Python: pyautogui模块之鼠标控制
  4. ios13全选手势_iOS13系统5个简单实用的技巧 快速选择/三指操作/批量删除短信/文字转表情...
  5. 21南阳理工oj新生赛Round#5--这是一道防ak题
  6. tesseract 使用说明
  7. linux m530显卡,M530显卡和MX150哪个好(AMD Radeon M530)
  8. 当js中的for循环遇到延时器或者定时器时需要注意的问题(这里有个大坑)
  9. java写原生js_[Java教程]原生JS拖拽
  10. 使用ASDM 管理 ciscoASA设备
  11. php特效表白代码,js爱心表白动画特效代码
  12. python实现复联4影评数据词云可视化分析
  13. 【20保研】南开大学统计与数据科学学院2019年全国优秀大学生夏令营
  14. 【PYTHON】利用Python爬取电影网站
  15. mantis使用介绍
  16. Hive-WARN: Establishing SSL connection without server‘s identity verification is not recommended. Ac
  17. 概述HTTPS,简单了解对称性加密算法、非对称性加密算法方式
  18. 安卓默认打开指定apk的无障碍权限
  19. 如何实现select * exclude column
  20. python websocket 断线自动重连

热门文章

  1. 企业邮箱哪个品牌好?
  2. PYCHARM SHOTCUT
  3. android 蓝牙之数据传输
  4. Nginx 优化参考 —— 筑梦之路
  5. 如何将这个递归调用停下来呢?
  6. 桌面上ie图标不见了,怎样恢复
  7. WideDeep论文翻译
  8. py218-基于Python+django的鲜花销售商城网站#毕业设计
  9. python爬虫之request.get()参数
  10. apple tv 开发_如何在Apple TV上观看直播电视