2018-05-30 11:56:03 loovelj 阅读数 1844

最近在学习OpenCV中算法的基础知识,发现很多细节,记录下来。

仿射变换和投影变换

仿射变化是图像在二维平面上进行变换,需要三个点的位置就能确定前后变换的模式,就像放在桌子上的一张纸,你只能转,裁剪,不过还有放大和缩小的功能。

投影变换就是三维立体的投影在二维上,需要四个点才能确定变换的模式,好处是可以任意变形了。具体公式如下所示:

![这里写图片描述](https://img-blog.csdn.net/20180530112249210?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xvb3ZlbGo=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

上面主要参考了图像处理的仿射变换与透视变换 ,文中讲的很详细。

双线性差值

双线性差值主要是讲在图像进行放大、缩小时对于新增像素的填充,其中,双线性差值考虑周围四个点的像素值以及距离,从而确定其新增值。
这里写图片描述

看,通过立体图就能形象的感知到黑点的意义了。

特别方便的公式就是矩阵求解

这里写图片描述

同时,具体代码实现时,还有一个小细节,就是对于图像坐标,不能选在坐下家,要选在每个像素中间位置具体讲解

这里写图片描述

int x=(i+0.5)*m/a-0.5

int y=(j+0.5)*n/b-0.5

代替

int x=i*m/a

int y=j*n/b

关于边缘检测

If you want to detect both edges, better option is to keep the output datatype to some higher forms, like cv2.CV_16S, cv2.CV_64F etc, take its absolute value and then convert back to cv2.CV_8U. Below code demonstrates this procedure for a horizontal Sobel filter and difference in results.

就是说梯度检测的时候,CV_8U是只能检测正梯度,而不能保存负梯度,这样很多负梯度,所以要保证用更高精度来实现。

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('box.png',0)

# Output dtype = cv2.CV_8U
sobelx8u = cv2.Sobel(img,cv2.CV_8U,1,0,ksize=5)

# Output dtype = cv2.CV_64F. Then take its absolute and convert to cv2.CV_8U
sobelx64f = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
abs_sobel64f = np.absolute(sobelx64f)
sobel_8u = np.uint8(abs_sobel64f)

plt.subplot(1,3,1),plt.imshow(img,cmap = 'gray')
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(1,3,2),plt.imshow(sobelx8u,cmap = 'gray')
plt.title('Sobel CV_8U'), plt.xticks([]), plt.yticks([])
plt.subplot(1,3,3),plt.imshow(sobel_8u,cmap = 'gray')
plt.title('Sobel abs(CV_64F)'), plt.xticks([]), plt.yticks([])

plt.show()

这里写图片描述

可以看到,在CV_8U精度下,右边边缘没有检测到

2018-08-30 15:52:26 qq_35330032 阅读数 3403

1.1基本概念

图像处理的概念是对图像信息进行加工处理,以满足人的视觉心理和实际应用的需求。

模拟图像:连续图像,采用数字化(离散化)表示和数字技术处理之前的图像。

数字图像:由连续的模拟图像采样和量化而得的图像,组成其基本单位是像素。

像素的值代表图像在该位置的亮度或灰度,称为图像的灰度值。

数字图像像素具有整数坐标和整数灰度值。

1.2

图像增强:调整图像的对比度,突出重要细节,改善图像质量。

图像复原和校正:去噪声、去模糊。使得图像能够尽可能地贴近原始图像。

图像的平滑:图像的去噪声处理(通过滤波算法),为了去除实际成像过程中,因成像设备和环境所造成的图像失真,提取有用的信息。

边缘锐化:加强图像的轮廓边缘和细节(一般轮廓边缘都处于灰度突变的地方),通过基于微分锐化算法使灰度反差增强。

图像分割:图像分割就是把图像分成若干个特定的、具有独特性质的区域。

2.1

计算机图像处理的几个内容:

如何对模拟图像进行采样、量化以产生数字图像?

如何压缩图像数据以便存储和传输?

如何对数字图像做各种变换以方便处理?

采样是空间上的离散化,量化是灰度上的离散化。

图像采样就是在水平和垂直方向上等分隔地分割成网状。

量化是在每个采样点上进行的,所以必须先采样后量化。两者都是图像数字化不可或缺的两个操作,两者紧密相关,同时完成。

图像量化实际就是将图像采样后的样本值的范围分为有限多个区域,落入某区域中的值用同一值表示,从而用有限的离散数值量来代替无限的连续模拟量。量化时确定的离散取值个数称为量化级数,表示量化的色彩和亮度值所需的二进制位数称为量化字长,一般量化字长为8位、16位或24位,量化字长越大,越能真实反映原有图像的颜色,但存储的字节也越大。

M、N图像尺寸,K每个像素所具有的离散灰度级数(不同灰度值的个数)

存一幅图像所需的位数(bit)B=M*N*K 减少K值能增强图像的反差。

LENA图是永恒的经典,图像处理领域使用最为广泛的标准测试图。

2.2

图像模式:

1、灰度图像:每个像素的信息由一个量化的灰度级来描述的图像,无彩色信息。

2、黑白图像、二值图像:只有黑白两色没有中间的过渡,像素值为0、1。

3、彩色图像:数据多采用RGB三基色模型,包含亮度和颜色两类信息。

色彩的三要素包括色调(光波的不同波长,反映不同颜色的种类)、饱和度(颜色的纯度,颜色的深浅程度)、亮度(光的明亮程度)。HSL模型

 

2.3

图像文件格式:

BMP文件格式 位图文件格式 由文件头、调色板数据、图像数据三部分组成

GIF  文件格式 存储256色图像

TIFF 文件格式 相对经典、功能很强的图像文件存储格式

JPEG文件格式 静止图像压缩标准文件格式

DICOM  格式 医学图像文件存储格式

2.4图像质量评价

客观评价标准:归一化均方误差NMSE、峰值均方误差PMSE、等效信噪比PSNR

主观评价标准:图像逼真度、图像可懂度

2019-06-13 20:55:37 qq_39384184 阅读数 622

图像处理

点算子

图像处理中最基本的运算就是点运算,就是针对每个像素点进行计算。

特征提取与图像处(三) 直方图 点算子

在这里插入图片描述

伽马压缩

在这里插入图片描述

在传输过程中引入的噪声在黑暗区域被压扁,这与视觉系统的噪声敏感区域相对应。

伽马矫正

  • 伽马校正可以用来调整图像的亮度,公式为 I = I^gamma。
  • 当gamma>1,高光部分动态范围被压缩,低光部分动态范围被扩展(使低光部分的细节可以看清),图像整体变暗;
  • 当gamma<1,高光部分被扩展,低光部分被压缩,图像整体变亮。

【图像处理知识复习】02伽马校正matlab,C++实现

直方图均衡化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

直方图均衡化非线性处理,图片无法还原。

经过直方图均衡化的处理,颜色的数目通常减少。

数字图像处理之直方图均衡化
直方图均衡化的数学原理

自适应直方图均衡化

AHE算法通过计算图像的局部直方图,然后重新分布亮度来改变图像对比度。

限制对比度自适应直方图均衡化算法原理、实现及效果

  • 通过插值加快计算速度

插值使得上述算法效率上有极大的提升,并且质量上没有下降。首先,将图像均匀分成等份矩形大小,如下图的右侧部分所示(8行8列64个块是常用的选择)。然后计算个块的直方图、CDF以及对应的变换函数。这个变换函数对于块的中心像素(下图左侧部分的黑色小方块)是完全符合原始定义的。而其他的像素通过哪些于其临近的四个块的变换函数插值获取。位于图中蓝色阴影部分的像素采用双线性查插值,而位于便于边缘的(绿色阴影)部分采用线性插值,角点处(红色阴影处)直接使用块所在的变换函数。

在这里插入图片描述

直方图均衡化的算法实现

在这里插入图片描述

直方图均衡化的理论推导

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

彩色图像处理

阅读数 90

没有更多推荐了,返回首页