目录

  • 一、 图像(各种图形和影像的总称)
    • 1、像素、分辨率
    • 2、灰度、通道、对比度
    • 3、RGB模型
    • 3、为什么很多图像识别将彩色图像灰度化?
  • 二、 图像的取样与量化
  • 三、上采样与下采样
    • 1、上、下采样
    • 2、常用的插值算法

一、 图像(各种图形和影像的总称)

  图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要源泉。“图”是物体反射或透射光的分布,“像“是人的视觉系统所接受的图在人脑中所形成的印象或认识,照片、绘画、剪贴画、地图、书法作品、手写汉学、传真、卫星云图、影视画面、X光片、脑电图、心电图等都是图像。

1、像素、分辨率

像素:像素是分辨率的单位。像素是构成位图图像最基本的单元,每个像素都有自己的颜色。一张图片由若干个像素点构成。

分辨率(解析度)
a) 图像分辨率就是单位英寸内的像素点数。单位为PPI(Pixels Per Inch)

b) PPI表示的是每英寸对角线上所拥有的的像素数目:

(X:长度像素数;Y:宽度像素数;Z:屏幕尺寸即对角线长度)

c) 屏幕尺寸指的是对角线长度

d)在生活中被混用,或者说错误的用做衡量图像内的像素点数量,手机拍的相片常用19201080描述图片的大小,其实这里的19201080不是分辨率。而是图片的大小,我们误用为分辨率就是图片的大小。

2、灰度、通道、对比度

(1) 灰度:表示图像像素明暗程度的数值,也就是黑白图像中点的颜色深度。范围一般为0-255。白色为255,黑色为0。

(2通道:把图像分解成一个或多个颜色成分:
  ①单通道:一个像素点只需一个数值表示,只能表示灰度,0为黑色; (二值图&灰度图)

  ②三通道:RGB模式,把图像分为红绿蓝三个通道,可以表示彩色,全0表示黑色;

  ③四通道:RGBA模式,在RGB基础上加上alpha通道,表示透明度,alpha=0表示全透明

(3)对比度:指不同颜色之间的差别。对比度=最大灰度值/最小灰度值

3、RGB模型

(1)色彩三原色(CMYK):品红、黄、青
 光学三原色(RGB):红、绿、蓝

(2)颜色模型指的是某个三维颜色空间中的一个可见光子集,它包含某个色彩域的所有色彩。一般而言,任何一个色彩域都只是可见光的子集,任何一个颜色模型都无法包含所有的可见光。常见的颜色模型有RGB CIECMY/CMYK、(HSK NTSC、YcbCr、HSV、YUV 等。

(3)RGB转换为灰度图像的方法

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



(1)RGB值转化为浮点数

• 浮点数运算结果更精确,整数运算中会因丢弃小数部分可能导致颜色值严重失
真,计算过程越多越失真

• 将RGB值转化为[0,1]浮点数

• 二值化:

if (img_gray[i, j] <= 0.5):img_gray[i, j] = 0
else:img_gray[i, j] = 1

(2)opencv大坑之BGR
  opencv对于读进来的图片的通道排列是BGR,而不是主流的RGB!谨记!

#opencv读入的矩阵是BGR,如果想转为RGB,可以这么转
img4 = cv2.imread('1.jpg')
img4 = cv2.cvtColor(img4,cv2.COLOR_BGR2RGB)

(3)• 频率: 灰度值变化剧烈程度的指标,是灰度在平面空间上的梯度。

  • 高频、低频

  • 幅值: 幅值是在一个周期内,交流电瞬时出现的最大绝对值,也是一个正弦波,波峰到波谷的距离的一半

二、 图像的取样与量化

数字图像:计算机保存的图像都是一个一个的像素点,称为数字图像。

图像数字化过程由图像的取样与量化来完成。

取样:就是要用多少点来描述一幅图像,取样结果质量的高低就是用图像的分辨率来衡量的

量化:是指要使用多大范围的数值来表示图像采样之后的一个点。

数字化坐标值称为取样,数字化幅度值称为量化。

  一张图片在手机或PC上看起来边缘是连续的如图左边一样,但是放大后再去观察,边缘都是不连续的,由一个个小格子组成,如图右边.

  在取样时,若横向的像素数(列数)为M ,纵向的像素数(行数)为N,则图像总像素数为M*N个像素。

三、上采样与下采样

1、上、下采样

(1)缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个: 1、使得图像符合显示区域的大小; 2、生成对应图像的缩略图。

(2)放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。

(3)图像插值也可用来缩小图像。

上采样原理:内插值
下采样原理: (M/s) * (N/s)

2、常用的插值算法

  这部分内容网上已经有很多博客讲的很清楚了,我就不做重复性工作了,把自己学习过程中看的几篇觉得不错的博客链接分享给大家进行学习。

参考学习(必看):https://blog.csdn.net/qq_38463737/article/details/119898254

(1)最邻近插值(也称最近邻插值算法)

示例代码:

import cv2
import numpy as np
def function(img):height,width,channels =img.shapeemptyImage=np.zeros((800,800,channels),np.uint8)sh=800/heightsw=800/widthfor i in range(800):for j in range(800):x=int(i/sh)y=int(j/sw)emptyImage[i,j]=img[x,y]return emptyImageimg=cv2.imread("lenna.png")
zoom=function(img)
print(zoom)
print(zoom.shape)
cv2.imshow("nearest interp",zoom)
cv2.imshow("image",img)
cv2.waitKey(0)

(2)单线性插值算法

  加权:权即由测量值精度的不同在平差计算中所取的权重不同。精度越高,权越大。“加权”的意思就是“乘以权重”,即“乘以系数”的意思。

(3)双线性插值算法



在x方向做插值:
在y方向做插值:

综合起来:

由于图像双线性插值只会用相邻的4个点,因此上述公式的分母都是1。

  如果源图像和目标图像的原点(0, 0)均选择左上角,然后根据插值公式计算目标图像每点像素,假设你需要将一幅5x5的图像缩小成3x3,那么源图像和目标图像各个像素之间的对应关系如下:

  那么,让坐标加1或者选择右下角为原点怎么样呢?很不幸,还是一样的效果,不过这次得到的图像将偏右偏下。

  最好的方法就是,两个图像的几何中心重合,并且目标图像的每个像素之间都是等间隔的,并且都和两边有一定的边距。


  双线性差值法的计算比最邻近插值法复杂,计算量较大,但没有灰度不连续的缺点,图像看起来更光滑。

示例代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-import numpy as np
import cv2'''
python implementation of bilinear interpolation
'''
def bilinear_interpolation(img,out_dim):src_h, src_w, channel = img.shapedst_h, dst_w = out_dim[1], out_dim[0]print ("src_h, src_w = ", src_h, src_w)print ("dst_h, dst_w = ", dst_h, dst_w)if src_h == dst_h and src_w == dst_w:return img.copy()dst_img = np.zeros((dst_h,dst_w,3),dtype=np.uint8)scale_x, scale_y = float(src_w) / dst_w, float(src_h) / dst_hfor i in range(3):for dst_y in range(dst_h):for dst_x in range(dst_w):# find the origin x and y coordinates of dst image x and y# use geometric center symmetry# if use direct way, src_x = dst_x * scale_xsrc_x = (dst_x + 0.5) * scale_x-0.5src_y = (dst_y + 0.5) * scale_y-0.5# find the coordinates of the points which will be used to compute the interpolationsrc_x0 = int(np.floor(src_x))src_x1 = min(src_x0 + 1 ,src_w - 1)src_y0 = int(np.floor(src_y))src_y1 = min(src_y0 + 1, src_h - 1)# calculate the interpolationtemp0 = (src_x1 - src_x) * img[src_y0,src_x0,i] + (src_x - src_x0) * img[src_y0,src_x1,i]temp1 = (src_x1 - src_x) * img[src_y1,src_x0,i] + (src_x - src_x0) * img[src_y1,src_x1,i]dst_img[dst_y,dst_x,i] = int((src_y1 - src_y) * temp0 + (src_y - src_y0) * temp1)return dst_imgif __name__ == '__main__':img = cv2.imread('lenna.png')dst = bilinear_interpolation(img,(700,700))cv2.imshow('bilinear interp',dst)cv2.waitKey()

本文章参考了百度百科、他人技术博客、八斗学院免费教程资料、计算机视觉书籍等综合整理而来,如有侵权,联系删除!水平有限,欢迎各位指导交流!

计算机视觉基础之数字图像(1)相关推荐

  1. 计算机视觉基础之数字图像(2)

    目录 一.直方图 1.什么是直方图? 2.直方图的性质 3.直方图均衡化 4.相关示例代码 二.滤波 1.定义 2.线性滤波 三.卷积 1.定义 2.卷积--过滤器/卷积核/Kernel 3.卷积的应 ...

  2. 计算机视觉专业要学什么课程,[08本]“计算机视觉基础”课程介绍和课件

    课程课件PDF及HTML介绍较大,可从SRTP FTP中下载:srtp.8800.org,用户名和密码都是srtp <计算机视觉基础>课程介绍 概述 本课程是信息科学与工程专业的选修课程, ...

  3. 灰度量化、图像分辨率、人工神经网络、BP网络——神经网络和计算机视觉基础总结

    有幸拜读大佬言有三的书<深度学习之模型设计>,以下是我的读书笔记,仅供参考,详细的内容还得拜读原著,错误之处还望指正. <深度学习之模型设计>读书笔记--第一章:神经网络和计算 ...

  4. CVPR 2019最佳论文重磅出炉!李飞飞获计算机视觉基础贡献奖

    https://www.toutiao.com/a6703929448929952270/ [新智元导读]刚刚,CVPR 2019最佳论文公布了:来自CMU的辛书冕等人合作的论文获得最佳论文奖,最佳学 ...

  5. 图像处理与计算机视觉基础、经典以及最近发展

    图像处理与计算机视觉基础,经典以及最近发展 By xdyang(杨晓冬xdyang.ustc@gmail.com) 一. 绪论 1. 为什么要写这篇文章 从2002年到现在,接触图像快十年了.虽然没有 ...

  6. CV:计算机视觉基础之图像存储到计算机的原理daiding

    CV:计算机视觉基础之图像存储到计算机的原理daiding 目录 图像存储到计算机的原理 图像存储到计算机的原理 其实图像文件存储的都是每一个像素对应的颜色值. 比如一幅图像有16个像素,那么这个图像 ...

  7. 计算机视觉基础——3D空间坐标点的重建(三角测量)

    本文承接计算机视觉基础--相机运动位姿估计 补充说明:当相机发生纯旋转的时候,我们的t为0,无法通过公式求解出本质矩阵E. python之SVD函数介绍 三角测量 Triangulation求解3D坐 ...

  8. 9月16日计算机视觉基础学习笔记——认识机器视觉

    文章目录 前言 一.Week 1 homework 1.基本操作 2.滤波 二.从图像处理到计算机视觉 1.反色变换 2.Gamma 变换 3.直方图 & 直方图均衡化 三.计算机视觉的两个步 ...

  9. 【自动驾驶技术】优达学城无人驾驶工程师学习笔记(七)——计算机视觉基础

    计算机视觉基础目录 前言 颜色选择(Color Selection) 理论基础 代码实践 区域筛选(Region Masking) 理论基础 代码实践 Canny边缘检测 问题背景 Canny边缘检测 ...

最新文章

  1. 随机森林和决策树区别_第六讲 决策树与随机森林
  2. python小数输出01_python:格式化输出(上)
  3. 中国石油管道科技研究中心2014届应届毕业生招聘(软件工程师岗)
  4. 获取cookie里面的值
  5. 莫名其秒的Cannot load JDBC driver class 'com.mysql.jdbc.Driv
  6. attr和prop区别
  7. 信息学奥赛一本通C++语言——1017: 浮点型数据类型存储空间大小
  8. GitHub与GitLab的区别
  9. 【我的物联网成长记14】车路协同,不只是车和路
  10. 【MIMO通信】基于matlab MIMO_OFDM通信系统仿真【含Matlab源码 314期】
  11. Lyncee 数字全息显微镜 DHM Digital Holographic Microscopy
  12. python职业发展规划-少走弯路,一个老程序猿谈PHP职业发展规划
  13. 单片机控制SIM900A型GSM模块发送数字短信(附源码)
  14. 从负指数分布/泊松分布到排队论(经理能扣篮,但不经常也不绝对)
  15. 原生JS实现的跳一跳小游戏完整实例
  16. MTK6577+Android环境变量
  17. BIOS INT中断整理
  18. 什么是ACL访问控制列表?它们的匹配机制是什么?
  19. 计算机地图制图原理与算法,计算机地图制图原理与算法基础.ppt
  20. java中使用集合模拟斗地主发牌的两种排序(根据大小或者花色)

热门文章

  1. 网络安全如何打造?保护对象就是你的最佳课本
  2. pdf怎么分割成一页一页的文件?
  3. 2020年8计算机软件基础自考,浙江省2020年8月高等教育自学考试计算机软件基础(二)试题.docx...
  4. 爱丁堡大学计算机专业alevel,爱丁堡大学各专业alevel要求简单介绍及入学条件
  5. microRNA172靶向APETALA2以调节苹果中的类黄酮生物合成
  6. java p12 ssl_java读取双向证书(p12)证书向微信发送请求
  7. 一些oracle的论坛和网站
  8. 野狗API的初步使用
  9. 记录一个Python多线程的bug
  10. 达索系统仿真Simulia——BMW宝马案例学习 | 达索系统百世慧