计算机视觉 | 八斗人工智能 (上)
目录
- 数字图像
- 像素和分辨率
- 灰度、通道和对比度
- 其他概念
- 插值算法
- 上采样和下采样的概念
- 1. 最邻近插值
- 2.双线性插值(最常用)
- 3.双三次插值
- 直方图均衡化
- 1. 灰度图直方图均衡化
- 2. 彩色图直方图均衡化
数字图像
像素和分辨率
像素
:
像素是分辨率的单位。像素是构成位图图像最基本的单元。
分辨率
:
图像分辨率 就是 单位英寸内的像素点数(PPI)
屏幕尺寸 指的是 对角线的长度
像素点数量:1920*1080
分辨率是指:PPI
两者不可混淆
灰度、通道和对比度
灰度
:
表示图像像素的明暗程度的数值,也就是黑白图像中点的颜色深度。白色为255,黑色为0
通道
:
对比度
:
指不同颜色之间的差别。 对比度=最大灰度值/最小灰度值
三原色
:
计算机中,数字计算机是光学三原色(RGB),美术上用的是色彩三原色(CMYK)
RGB转化为Gray
:
cv2中封装的函数: cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
很多图像识别将RGB图像灰度化。
RGB值(初始为[0,255]之间的整数值)
转化为浮点数:
其他概念
频率
:灰度值变化剧烈程度的指标
幅值
:一个周期内交流电出现的瞬时最大值
数字图像
: 计算机保存的图像都是一个一个的像素点,称为数字图像
取值
: 要用多少点来描述一幅图像
量化
:要使用多大范围的数值来表示图像采样之后的一个点
插值算法
上采样和下采样的概念
上采样
:主要功能是放大原图像,可以显示在更高分辨率的显示设备上
原理:内插值
下采样
:主要目的是:生成对应图像的缩略图
原理:插值 or (M/s)*(N/s)
1. 最邻近插值
cv2.resize函数的实现原理是图像插值,也称为图像重采样。它的目的是在图像的缩放、旋转、平移等变换中,将像素从原始位置移动到新位置,并生成新的像素值。在cv2.resize函数中,可以使用不同的插值方法,如最邻近插值、双线性插值、双三次插值等。其中,最邻近插值是一种简单的插值方法
它的原理如下:
首先确定目标图像上的一个像素位置,假设这个位置为(x, y);
计算出原始图像上的对应位置,假设为(x’, y’);
最邻近插值方法将原始图像上离(x’, y’)最近的像素的值赋给目标图像上的(x, y)位置。
也就是说,最邻近插值方法并不考虑离目标位置较远的像素,而是选择距离最近的像素来进行插值,因此它的计算速度非常快。但是,由于它没有考虑周围像素的权重,因此可能会产生锯齿状的边缘或明显的马赛克效应,特别是在图像缩放比例较大时。
除了最邻近插值方法之外,cv2.resize函数还支持双线性插值和双三次插值等更高级的插值方法。在实际应用中,我们需要根据具体的应用场景来选择合适的插值方法。
代码:
import cv2def nearest_upsampling(img, scale):"""实现RGB图像最邻近插值的上采样功能:param img: 原始图像,必须为RGB图像:param scale: 上采样比例:return: 上采样后的图像"""# 获取原始图像的宽和高height, width, channels = img.shape# 计算上采样后的宽和高new_width = int(width * scale)new_height = int(height * scale)# 使用cv2.resize实现最邻近插值的上采样img_upsampled = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_NEAREST)return img_upsampled
使用方式:
# 读取图像
img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)# 进行最邻近插值的上采样,比例为2
img_upsampled = nearest_upsampling(img, 2)# 显示原始图像和上采样后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Upsampled Image', img_upsampled)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.双线性插值(最常用)
双线性插值是一种图像插值方法,它可以用于图像的缩放、旋转、平移等变换中。通俗来讲,就是在缩放或旋转图像时,使用周围4个像素的颜色信息来计算新像素的颜色值,以达到图像的平滑处理。双线性插值的原理就是先在水平方向上进行一次线性插值,然后在垂直方向上进行一次线性插值,将这两次插值的结果进行加权平均,得到最终的插值结果。
这种方法比最邻近插值更平滑,而比双三次插值计算速度更快,因此在许多图像处理的应用场景中被广泛使用
。
代码:
import cv2def bilinear_interpolation(img, scale):"""实现双线性插值的上采样功能:param img: 原始图像:param scale: 上采样比例:return: 上采样后的图像"""# 获取原始图像的宽和高height, width = img.shape[:2]# 计算上采样后的宽和高new_width = int(width * scale)new_height = int(height * scale)# 使用cv2.resize实现双线性插值的上采样img_upsampled = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_LINEAR)return img_upsampled
使用方法
# 读取图像
# cv2.IMREAD_COLOR是cv2.imread函数的一个参数,它的作用是告诉OpenCV以彩色图像的方式读取图像。
img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)# 进行双线性插值的上采样,比例为2
img_upsampled = bilinear_interpolation(img, 2)# 显示原始图像和上采样后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Upsampled Image', img_upsampled)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.双三次插值
双三次插值是一种高级的图像插值方法,它可以用于图像的缩放、旋转、平移等变换中。与双线性插值相比,双三次插值可以更加准确地保留原始图像的细节信息,从而在图像处理的应用场景中得到广泛应用。
双三次插值的原理
双三次插值的原理是在水平方向和垂直方向都进行三次插值,使用周围16个像素的颜色信息来计算新像素的颜色值。在三次插值的过程中,首先计算出相邻的四个像素的插值函数,然后再将这四个插值函数组合成一个整体的插值函数。这个整体插值函数的求解需要用到矩阵运算,因此计算复杂度较高,但是它可以在保持图像平滑的同时,尽可能地保留原始图像的细节信息。
代码实现:
import cv2def upscale_image_bicubic(img, scale_factor):"""使用双三次插值提高图像分辨率:param img: 原始图像:param scale_factor: 提高分辨率的倍数:return: 分辨率提高后的图像"""# 获取原始图像的宽和高height, width = img.shape[:2]# 计算分辨率提高后的宽和高new_width = int(width * scale_factor)new_height = int(height * scale_factor)# 使用cv2.resize函数进行分辨率提高,采用双三次插值方式upscaled_img = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_CUBIC)return upscaled_img
使用方法如以上其他函数相同
直方图均衡化
图像的灰度直方图
就是描述了图像灰度分布规律,它描述每个灰度级具有的像素个数
图像的灰度直方图
不关系像素所处的空间位置,因此不受图像旋转和平移变化 的影响,可以作为图像的特征。
代码实现:
import cv2
import matplotlib.pyplot as pltdef plot_gray_histogram(img):"""绘制灰度图像直方图:param img: 灰度图像:return: None"""# 计算灰度图像的直方图hist = cv2.calcHist([img], [0], None, [256], [0, 256])# 绘制直方图plt.plot(hist)# 设置x轴和y轴的标签和标题plt.xlim([0, 256])plt.xlabel('灰度值')plt.ylabel('像素数量')plt.title('灰度图像直方图')# 显示直方图plt.show()import cv2# 读取灰度图像 cv2.IMREAD_GRAYSCALE以灰度图读取
img = cv2.imread('tem.jpg', cv2.IMREAD_GRAYSCALE)# 绘制灰度图像直方图
plot_gray_histogram(img)
直方图均衡化
是将原图像的直方图通过变换函数变为均匀分布的直方图,然后按照均匀直方图修改原图像,从而获得一幅会的分布均匀的新图像,直方图均衡化就是用一定的算法使直方图大致平和的方法
其主要功能是 图像增强
1. 灰度图直方图均衡化
import cv2def equalize_gray_hist(img):"""灰度图直方图均衡化:param img: 灰度图像:return: 均衡化后的灰度图像"""# 进行直方图均衡化equalized_img = cv2.equalizeHist(img)return equalized_img
2. 彩色图直方图均衡化
YUV格式
:
在彩色图直方图均衡化中,我们只对Y通道进行直方图均衡化,而U和V通道保持不变。
这是因为在YUV颜色空间中,Y通道代表亮度,而U和V通道代表色度
,均衡化亮度通道能够增强图像对比度而不改变色度信息。
import cv2
import numpy as npdef equalize_color_hist(img):"""彩色图直方图均衡化:param img: 彩色图像:return: 均衡化后的彩色图像"""# 将图像转换为YUV格式yuv_img = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)# 对Y通道(亮度)进行直方图均衡化yuv_img[:,:,0] = cv2.equalizeHist(yuv_img[:,:,0])# 将图像转换回BGR格式equalized_img = cv2.cvtColor(yuv_img, cv2.COLOR_YUV2BGR)return equalized_img
计算机视觉 | 八斗人工智能 (上)相关推荐
- 计算机视觉 | 八斗人工智能 (中)
目录 卷积&滤波 1.一个没有任何效果的卷积核 2.平均均值滤波 3.图像锐化 4.soble边缘检测 卷积的三种填充模式 1.padding --> same模式 最常用的模式 2.f ...
- 八斗金宝库分享能赚取零花钱的几个副业项目
今天给大家带来一款完全无脑的赚钱项目,赚大钱做不到,挣点零花还是没有问题的哦 百度掘金做任务 网上有很多任务平台,这种平台会发布各种各样的任务,我们只要按要求完成任务,然后就能领钱了. 如果你自己有技 ...
- 一路狂奔的今日头条,在人工智能上还有三个隐忧
文 | 颜璇 来源 | 智能相对论(aixdlun) 今日头条仍在继续整改. 4月11日,张一鸣一夜未眠,于凌晨发公开信向公众道歉,紧接着,头条内部宣布整改,APP里语录.美女.趣图.段子.美图5个频 ...
- 国内Android游戏推荐,2月中国安卓游戏收入榜Top20:腾讯八款游戏上榜
[摘要]在Top20榜单中,腾讯共有八款游戏上榜,分别为<欢乐斗地主>.<天天跑酷>.<天天炫斗>.<全民反恐>.<全民飞机大战>.< ...
- 计算机视觉在小机器人中应用,计算机视觉系统在工业机器人上的应用研究.doc...
计算机视觉系统在工业机器人上的应用研究.doc 计算机视觉系统在工业机器人上的应用研究 摘要:目前,工业机器人广泛适用于工业生产中,在工作人员的指引操作下,可以完成许多的指令,但是机器人没有感知外界的 ...
- 2018-2019-1 20165318《信息安全系统设计基础》第八周课上测试
2018-2019-1 20165318<信息安全系统设计基础>第八周课上测试 测试-1-ch03 任务详情 通过输入gcc -S -o main.s main.c,将下面c程序" ...
- java 跨平台很鸡肋,Mac 篇八:Mac上的这个软件看起来很鸡肋,其实很牛很强大
Mac 篇八:Mac上的这个软件看起来很鸡肋,其实很牛很强大 2019-11-26 11:37:36 8点赞 42收藏 1评论 用了很多年Mac,可能这个应用都没有注意到,看起来不起眼,其实用好它,不 ...
- PHP编程第八期线上培训班课程
教程介绍 PHP编程第八期线上培训班课程涵盖PHP及其周边主要技术,web网站建设,微信小程序开发等可以轻松应对!汇总出最实用的PHP技术,学完之后,可以快速融入企业开发环境中.适合没有Web开发基础 ...
- 人工智能学习(八斗学院)
需要资料请私聊:Q:1421724567,V:15874363534(请备注来意) [资料齐全] 老师讲的非常清楚仔细 加油,挑战一下自己!!! 需要资料请私聊:Q:1421724567,V:1587 ...
最新文章
- 【C++】stack的部分使用(之后会不定时进行更新)
- Python之Pandas库学习(一):简介
- cesium 设置时间_Cesium应用篇:3控件(1)Clock
- 使用localStorage解决浏览器刷新后无法再从vuex中获取数据的问题
- P1527 [国家集训队]矩阵乘法
- 匿名内部类 可以访问外部类_Java——内部类详解
- 巴菲特2021年致股东信披露重仓股名单
- sql 复合键_SQL复合键
- 关于数据库“事务”“索引”“实例”的含义
- 全球抵押销售点(POS)软件行业调研及趋势分析报告
- 单片机项目开发设计 - 器件选型原则根据、常用单片机资源配置要点(GPIO、SPI、IIC、ADC)
- PyCharm的安装和破解
- hdfs写流程和MR缓冲区
- 使用cookie实现一周内自动登录
- HDMI转MIPI CSI东芝转换芯片-TC358743XBG/TC358749XBG
- 学生信息管理系统python
- [今日名人回顾]计算机之父—冯·诺依曼
- 在微信朋友圈常见的H5要如何制作?
- 激光雷达公司一径科技完成C轮融资,将加快核心芯片自研
- 变速器档位速比的matlab仿真