首页 > 其他 > 详细

OpenCV 学习笔记 02 使用opencv处理图像

时间:2019-01-06 00:30:09      阅读:200      评论:0      收藏:0      [点我收藏+]

1 不同色彩空间的转换

opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度、BRG、HSV(Hue-Saturation-Value)

  • 灰度 - 灰度色彩空间是通过去除彩色信息来将其转换成灰阶,灰度色彩空间对中间处理特别有效,比如人脸检测
  • BGR - 蓝-绿-红 彩色空间,每个像素点都由一个三元数组来表示,分别代表蓝-绿-红三种颜色。
  • HSV,Hue 表示色调,Saturation 表示饱和度,Value 表示黑暗的程度。

2 傅里叶变换

傅里叶变换的概念是许多常见的图像处理操作的基础,比如边缘检测或线段和形状检测。

2.1 高通滤波器

高通滤波器(HPF)是检测图像的某个区域,然后根据像素与周围像素的亮度差值来提升(boost)该像素的亮度的滤波器。

高通滤波器在边缘检测非常有效,它会采用一种称为高频提升滤波器(high boost filter)的高通滤波器。

首先给出一个例子

import cv2
import numpy as np
from scipy import ndimage

kernel_3 = np.array([
    [-1, -1, -1],
    [-1, 8, -1],
    [-1, -1, -1]
    ])

kernel_5 = np.array([
    [-1, -1, -1, -1, -1],
    [-1,  1,  2,  1, -1],
    [-1,  2,  4,  2, -1],
    [-1,  1,  2,  1, -1],
    [-1, -1, -1, -1, -1]
    ])

img = cv2.imread(small.jpg, 0)
print(help(cv2.imread))

k3 = ndimage.convolve(img, kernel_3)
k5 = ndimage.convolve(img, kernel_5)

blurred = cv2.GaussianBlur(img, (11, 11), 0)
g_hpf = img - blurred

cv2.imshow(3*3, k3)
cv2.imshow(5*5, k5)
cv2.imshow(g_hpf, g_hpf)
cv2.waitKey()
cv2.destroyAllWindows()

运行可以得到如下图:

技术分享图片

代码分析:

1)导入模块后,定义了核。

核,是指一组权重的积核,将它应用在源图像的一个区域,并由此生成目标图像的一个像素。

2)在cv2.imread()中的参数 0 。主要是将其转换为单通道灰度图像。详见 OpenCV 学习笔记 02 处理文件、摄像头和图形用户界面

cv2.IMREAD_GRAYSCALE = 0    如果设置,则始终将图像转换为单通道灰度图像。

3)对于给定核与图像的“ 卷积 convole ” 而言,numpy 在多维数组卷积运算时较为复杂(一维数组完成可以胜任),scipy 的 convolve() 函数可解决完美地解决该问题。

4)最后一种高通滤波器的实现方法有两步;第一步对图像应用低通滤波器,第二步再对与原始图像计算差值。

5)不难发现,第三种效果最好。

2.2 低通滤波器

高通滤波器是根据像素与临近像素的亮度差值来提升该像素的亮度;

低通滤波器(Low Pass Filter, LPF)的实现原理是在像素与周围像素的亮度差值小于一个特定值时,平滑该像素的亮度。该法主要应用于去噪和模糊化;其中,高斯模糊是最常用的模糊滤波器(平滑滤波器)之一,它是一个削弱高频信号强度的低通滤波器。

 

OpenCV 学习笔记 02 使用opencv处理图像

原文:https://www.cnblogs.com/gengyi/p/10226862.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!