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

news/2025/1/15 21:44:06/

目录

  • 一、 图像(各种图形和影像的总称)
    • 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()

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


http://www.ppmy.cn/news/531933.html

相关文章

《数字图像处理》- 1. MATLAB实现图像的傅里叶变换

声明 本文仅在CSDN发布&#xff0c;其他均为盗版。请支持正版&#xff01; 正版链接&#xff1a;https://blog.csdn.net/meenr/article/details/117605843 用MATLAB实现图像的傅里叶变换 实验1、MATLAB实现图像的傅里叶变换 目录 实验1、MATLAB实现图像的傅里叶变换1. 实验目…

【计算机视觉】数字图像与机器视觉基础

目录 一、位图文件分析1. 什么是位图2. BMP位图文件3. BMP文件结构4. 位图文件头5. 位深度6. 不同位深度图像对比 二、对比不同文件格式的图片文件大小三、基于奇异值分解(SVD)提取图片特征值四、开闭运算检测图像中硬币和细胞的个数1. 检测硬币数量2. 检测细胞数量 五、图片条…

【CV/Matlab系列】基于matlab GUI的数字图像处理系统设计【含Matlab源码】

DATE: 2020.10.18 文章目录 0、代码获取方式1、前言2、数字图像处理平台展示2.1、初始界面2.2、示例1(FFT)2.3、示例2(平滑滤波)2.4、示例3(锐化)2.5、示例4(Sobel边缘检测)2.6、示例5(图像复原)0、代码获取方式 方式一:订阅付费专栏 《毕业设计代码进阶版》,可获…

C语言数字图像处理---1.1图像的像素格式与图像读写

前言 本专栏面向所有希望或有兴趣从事数字图像处理工作、学习或研究的朋友&#xff0c;不懂MATLAB和OPENCV没关系&#xff0c;仅需要基础的C语言知识&#xff0c;便可以通过本专栏内容轻松入门数字图像处理方向。目前市面上的数字图像处理书籍种类繁多&#xff0c;往往令人眼花…

数字图像处理-数字水印的嵌入与提取

数字水印嵌入与提取 //本篇报告所有内容已上传csdn我的资源中&#xff08;包括源码与报告word和ppt&#xff09;&#xff0c;欢迎大家下载进行进一步修改研究。摘要&#xff1a;本报告重点介绍数字水印的嵌入与提取算法。数字水印根据水印的嵌入技术不同分为空间域数字水印和变…

数字图像处理——高斯低通滤波器(GLPF)实验报告

一、程序代码及注释 1、myGLPF函数 %pho参数为输入图像的路径 %D0参数为截止频率 function im2 myGLPF(pho,D0) ima imread(pho); %读取输入图像 %得到高斯低通滤波器 [r,c] size(ima); %获取输入图像的行和列 D zeros(r,c); %D(u,v)是距频率矩形中心的距离 for i1…

使用pytesseract进行图像识别字母和数字 (python3.x)

前言 策划说&#xff0c;有一些玩家会在头像上面p自己的微信号或者QQ号之类的&#xff0c;可不可以把他们自动筛选出来&#xff0c;于是找了资料研究了下&#xff0c;这里分享一下 先看运行效果 环境准备&#xff1a; (1) python版本3.x (2) 安装插件&#xff0c;pip3 insta…

数字图像处理(2): 颜色空间/模型—— RGB, CMY/CMYK, HSI, HSV, YUV

目录 1 什么是颜色 2 颜色的数字化 3 常见的颜色模型 3.1 RGB 模型 3.2 CMY/CMYK 模型 3.3 HSI 模型 3.4 HSV 模型 3.5 HSB 模型 3.6 Lab 模型 3.7 YUV 模型 3.8 模型分类 4 Python代码示例 参考资料 1 什么是颜色 颜色是通过眼、脑和我们的生活经验所产生的对光的…