前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数字图像处理及图像增强

数字图像处理及图像增强

作者头像
嵌入式视觉
发布2022-09-05 14:25:20
5160
发布2022-09-05 14:25:20
举报
文章被收录于专栏:嵌入式视觉

Contents

图像处理基本概念理解

  • 亮度通俗理解就是图像给人肉眼的明暗程度
  • 饱和度指的是图像颜色种类的多少
  • 对比度指的是图像亮暗的落差值,即图像最大灰度级和最小灰度级之间的差值
  • 图像锐化指的是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得更清晰的图像操作

图像增强算法

图像翻转

代码语言:javascript
复制
import numpy as np
# flipping images with numpy
flipped_img = np.flipr(img)
plt.imshow(flipped_img)
plt.show()

平移(Translations)

代码语言:javascript
复制
import cv2
import matplotlib.pyplot as plt


def translation(img):
    print(img.shape)
    height, width = img.shape
    # 左移
    for i in range(height, 1, -1):
        for j in range(width):
            if (i < height - 20):
                img[j][i] = img[j][i - 20]
            elif (i < height - 1):
                img[j][i] = 0
    plt.imshow(img)
    plt.imshow
    cv2.imwrite("./demo.png", img)


if __name__ == "__main__":
    img = cv2.imread('./person/demo1.png', 0)
    img = cv2.resize(img, (124, 124))
    translation(img)

图像平移结果

图像对比度和亮度调整

调整图像亮度与对比度算法主要由以下几个步骤组成:

  1. 计算图像的RGB像素均值– M
  2. 对图像的每个像素点Remove平均值-M
  3. 对去掉平均值以后的像素点 P乘以对比度系数
  4. 对步骤上处理以后的像素P加上 M乘以亮度系统
  5. 对像素点RGB值完成重新赋值

将像素值变小,图像亮度减小,色彩变暗;像素值增大,图像亮度增大,色彩变亮。 代码如下:

代码语言:javascript
复制
import os
import numpy as np
import cv2

if __name__ == '__main__':
    img = cv2.imread('568.Bmp', 0)
    img = np.array(img)
    mean = np.mean(img)
    img = img - mean
    img = img * 1.5 + mean * 0.7  # 修对比度和亮度
    img = img / 255.  # 非常关键,没有会白屏
    cv2.imshow('pic', img)
    cv2.waitKey()

注意,只需要修改上面代码中的1.5和0.7这两个参数就可以修改对比度和亮度。特别提醒下 img = img/255.这句,之前显示出来图片全是白色的,不知道什么问题。去查了下手册,解释如下:

• If the image is 8-bit unsigned, it is displayed as is.  • If the image is 16-bit unsigned or 32-bit integer, the pixels are divided by 256. That is, the value range  [0,255*256] is mapped to [0,255].  • If the image is 32-bit floating-point, the pixel values are multiplied by 255. That is, the value range [0,1] is  mapped to [0,255].  最后一句说明了问题,如果图片是32位float数据,显示数据会乘以255,因为他默认输入的数据是[0,1]的数据。

图像增强库imgaug使用

imgaug是一个封装好的用来进行图像augmentation的python库,支持关键点(keypoint)和bounding box一起变换。项目主页:imgaug doc

augmenters常用函数

导入augmenters类:

代码语言:javascript
复制
from imgaug import augmenters as iaa
import imgaug as ia
iaa.Sequential()

产生一个处理图片的Sequential,函数原型:

代码语言:javascript
复制
iaa.Sequential(children=None,
                random_order=False,
                name=None,
                deterministic=False,
                random_state=None)

参数:

  • children: 想要应用在图像上的Augmenter或者Augmenter集合。默认None
  • random_order: bool类型, 默认False。是否对每个batch的图片应用不同顺序的Augmenter list。当设置为True时,不同batch之间图片的处理顺序都会不一样,但是同一个batch内顺序相同。
  • deterministic: bool类型, 默认False。
iaa.someof()

将Augmenter中的部分变换应用在图片处理上,而不是应用所有的Augmenter。

iaa.OneOf()

每次从一些列augmenters中选择一个来变换。

iaa.Sometimes()

batch中的一部分图片应用一部分Augmenters,剩下的图片应用另外的Augmenters。

参考资料

数字图像处理系列二】亮度、对比度、饱和度、锐化、分辨率

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 图像处理基本概念理解
  • 图像增强算法
    • 图像翻转
      • 平移(Translations)
        • 图像对比度和亮度调整
        • 图像增强库imgaug使用
          • augmenters常用函数
            • iaa.Sequential()
            • iaa.someof()
            • iaa.OneOf()
            • iaa.Sometimes()
        • 参考资料
        相关产品与服务
        图像处理
        图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档