图像处理基础

简介: 图像处理基础

现如今我们每时每刻都在与图像打交道,而图像处理也是我们绕不开的问题,本文将会简述图像处理的基础知识以及对常见的裁剪、画布、水印、平移、旋转、缩放等处理的实现。



01

图像处理基础


在进行图像处理之前,我们必须要先回答这样一个问题:什么是图像?

答案是像素点的集合。

如上图所示,假设红色圈的部分是一幅图像,其中每一个独立的小方格就是一个像素点(简称像素),像素是最基本的信息单元,而这幅图像的大小就是 11 x 11 px 。


1、二值图像

图像中的每个像素点只有黑白两种状态,因此每个像素点的信息可以用 0 和 1 来表示。


2、灰度图像

图像中的每个像素点在黑色和白色之间还有许多级的颜色深度(表现为灰色),通常我们使用 8 个 bit 来表示灰度级别,因此总共有 2 ^ 8 = 256 级灰度,所以可以使用 0 到 255 范围内的数字来对应表示灰度级别。


3、RGB图像

红(Red)、绿(Green)、蓝(Blue)作为三原色可以调和成任意的颜色,对于 RGB 图像,每个像素点包含 RGB 共三个通道的基本信息,类似的,如果每个通道用 8 bit 表示即 256 级灰度,那么一个像素点可以表示为:

([0 ... 255], [0 ... 255], [0 ... 255])



图像矩阵

每个图像都可以很自然的用矩阵来表示,每个像素对应矩阵中的每个元素。


例如:

1、4 x 4 二值图像:


2、4 x 4 灰度图像:


3、4 x 4 RGB 图像:


在编程语言中使用哪种数据类型来表示矩阵?答案是多维数组。例如上述 4 x 4 RGB 图像可转换为:


图像处理的本质实际上就是在处理像素矩阵即像素多维数组运算。



02

基本处理实现


对于图像的基本处理,本文示例使用的是 opencv-python 和 numpy 库。


示例:

  1. 裁剪:切割矩阵即可。
  2. 画布:先构建指定大小的画布背景,再填充图像即可。
  3. 水印:矩阵合并运算,使用 cv : addWeighted 方法。
  4. 平移:构建平移变换矩阵,使用 cv : warpAffine 方法。
  5. 旋转:构建旋转变换矩阵,使用 cv : warpAffine 方法。
  6. 缩放:使用 cv : resize 方法。


OpenCV 提供的 resize 缩放算法包括:


根据官方的文档,缩小图像时建议使用 INTER_AREA 算法,放大图像时建议使用 INTER_CUBIC(较慢)算法或者 INTER_LINEAR(更快效果也不错)算法。




本文介绍了图像处理的基础,以及通过 OpenCV 实现了几种常见的图像处理功能。

目录
相关文章
|
10天前
|
编解码 算法 计算机视觉
图像处理之高斯金字塔
图像处理之高斯金字塔
13 3
|
10天前
|
计算机视觉
图像处理之图像梯度效果
图像处理之图像梯度效果
8 0
|
10天前
|
计算机视觉
图像处理之水纹效果
图像处理之水纹效果
11 1
|
10天前
|
计算机视觉
图像处理之开操作详解
图像处理之开操作详解
7 0
|
1月前
|
机器学习/深度学习 算法 PyTorch
计算机视觉快速入门:探索图像处理
本文介绍了计算机视觉的基本概念和学习路径,包括图像处理、特征提取、目标检测、图像分类与分割以及深度学习在该领域的应用。初学者应从图像处理基础开始,学习数字图像概念、处理技术及开源库如OpenCV。接着,探索特征提取与描述方法,如SIFT和HOG,以及目标检测的算法,如Haar级联和YOLO。进一步,掌握图像分类和分割技术,涉及深度学习模型如CNN。通过实践项目深化理解,并关注最新研究,持续学习和探索,以在计算机视觉领域不断进步。
|
10月前
|
PHP 数据安全/隐私保护 计算机视觉
PHPImagine 图像处理库介绍
随着网络的发展,人们对图像的需求越来越高。作为一个PHP开发者,我们在处理图像时经常会遇到一些问题,比如裁剪、缩放、加水印等。这些问题都可以通过使用图像处理库来解决。PHPImagine就是一种优秀的图像处理库。
58 0
|
存储 人工智能 算法
入门|图像处理技术
入门|图像处理技术
153 0
|
计算机视觉 异构计算
|
存储 编解码 算法
图像处理入门
图像处理入门
57 0
图像处理入门
|
Java 数据安全/隐私保护 计算机视觉
thumbnails图像处理库的使用
thumbnails是Java一个优秀的图像处理库,可以对图片进行压缩、加水印、裁剪、更改格式等功能。下面为大家介绍使用这个图像处理库。
thumbnails图像处理库的使用