亚像素Sub Pixel

评估图像处理算法时,通常会考虑是否具有亚像素精度。

亚像素概念的引出:

图像处理过程中,提高检测方法的精度一般有两种方式:一种是提高图像系统的光学放大倍数和CCD相机的分辨率能力;另一种是引入亚像素细分技术来弥补硬件的不足以提高图像系统的分辨率。

如使用亚像素细分技术将精度提到到0.01像素,就相当于提高了100倍的图像系统分辨率。

[分辨率可以从显示分辨率与图像分辨率两个方向来分类。

显示分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素有多少。由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多。显示分辨率一定的情况下,显示屏越小图像越清晰,反之,显示屏大小固定时,显示分辨率越高图像越清晰。
图像分辨率则是单位英寸(PPI,pixel per inch)中所包含的像素点数,其定义更趋近于分辨率本身的定义。]

优点:大大节省系统的硬件投入成本,降低技术应用的难度,扩大其应用范围。

亚像素细分技术最早是由Hueckel M F在a local visual operator which recognizes edges and lines中提出。目前此技术已取得了很好的成果。

  1. 亚像素定义:

    像素是成像面的基本单位也是最小单位,通常被称为图像的物理分辨率。

    如130万像素为1280*1024;

    如果成像系统要显示的对象尺寸小于物理分辨率时,成像系统是无法正常辨识出来的。

    实际上,亚像素细分算法是软件上对物理分辨率的近似优化结果。

    例如:某CMOS成像芯片,其像素间距为4.5um。在成像时,对物理世界中连续的图像进行了离散化处理,这时成像面上每一个像素点只代表其附近的颜色。

    而两个像素之间有4.5um的距离,在宏观上可以看作是连在一起的,但在微观上它们之间还有无限更小的东西存在,是两个物理像素之间的“像素”,这些更小的东西就称为“亚像素”。

    【注】:实际上,“亚像素”应该是存在的,只是硬件上没有比像素更细微的传感器把它检测出来而已,于是在软件上把它可以近似地计算出来。

    亚像素精度是指相邻两像素之间细分情况。输入值通常为二分之一,三分之一或四分之一。这意味着每个像素将被分为更小的单元从而对这些更小的单元实施插值算法。例如,如果选择四分之一,就相当于每个像素在横向和纵向上都被当作四个像素来计算。因此,如果一张5x5像素的图像选择了四分之一的亚像素精度之后,就等于创建了一张16x16的离散点阵,进而对该点阵进行插值。

    插值: 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。插值:用来填充图像变换时像素之间的空隙。

  2. 简单示例来说明一下:

    如下图所示:

    较大的点是真实的物理像素点,在物理像素点之间较小的点是亚像素点。

    假设:在理想成像条件下,一个点经过数字化后,在数字图像上表现为四个物理像素点的矩形,下图所示,左上角的四个标记1,2,3,4围起来的矩形所示。

    如果取整像素值作为目标的中心坐标,

    与采用亚像素方法求出的中心坐标相差0.5个物理像素。

  3. 亚像素算法的建立和选择:

    亚像素定位算法的前提条件是:目标不是孤立的单个像素点,而必须是由一定灰度分布和形状分布的一系列像素点组成。

    一般要经过三个步骤:

    ① 粗定位过程:

    对检测的目标进行初步定位,得到像素的精度;

    ② 确定搜索范围:

    为了提高精度和降低运算量,在目标位置附近选择合适大小的小领域区域作为分析的搜索区域。

    ③ 细定位过程

    根据区域特点,选择合适的亚像素算法进行细定位分析以得到亚像素的精度。

  4. 亚像素细分算法

    ①:几何方法

    利用图像中某一目标的几何特征得到亚像素的测量数据,一般是规则形状的目标,如圆,三角形、正方形等形状。

    常见的几何方法有形心法和灰度重心法

    形心法是对图像中圆、椭圆和矩形等中心对称的目标进行高精度定位的最简单的亚像素算法。

    由于形心法是根据被测目标的几何特性来确定位置,所以需要对图像进行二值化运算,识别 出要处理的目标区域。同时,此算法也要求目标图像的干扰噪声尽可能小,这样就不会产生 太大的误差,一般可进行图像预处理来减少误差的产生。当目标图像的对比度较好时,形心法的精度可以达到0.1个像素。

    灰度重心法是基于形心法的基本原理而形成的常用亚像素算法。

    在图像的亚像素级边缘提取中,它看成是以灰度或灰度的导数为权值的加权重心。它的好处在于算法充分利用了对称目标中每一点的灰度值,通常可获得比形心法更高的定位精度。

    ②:矩估计方法

    矩估计方法是目前亚像素算法中研究最广泛,应用最多的方法。由于矩是基于积分的运算, 因此矩也被认为是对噪声不敏感的稳定特征,同时矩还具有被测目标的矩特性在成像前后 保持不变的性质。根据矩的这种显著特点可以采用模板运算的方式对物体形状的边缘进行 亚像素细分。常见的算法有空间矩、灰度矩和ZOM正交矩等。

    ③:插值法

    线性插值是插值算法中最简单的一种。毫无疑问,它是通过等间隔的线性插值算法来实现对边缘过渡的细分。因此,其算法最为简单,速度快,但精度也不高。

    多项式插值法则改善了线性插值的缺陷,它采用了多项式插值函数来对边缘进行亚像素细分。

  5. 实践中,

    许多算法,都具有亚像素精度;对算法进行评估的一个指标是是否具有亚像素精度。

    这是什么意思呢?

    可以这样理解:图像采用某种算法,一般得出的像素坐标为整数int(x,y);但是如果得出的像素坐标不是整数如float(x,y);即数值计算的结果不为整数;可以说成算法具有亚像素精度(Sub Pixel Accuracy)的优点。

    计算的数值比整数值更为精确,如果需要得出整数,可以把返回的小数值近似为最接近的整数。

 
 
 
 

亚像素Sub Pixel的更多相关文章

  1. 寻找Harris、Shi-Tomasi和亚像素角点

    Harris.Shi-Tomasi和亚像素角点都是角点,隶属于特征点这个大类(特征点可以分为边缘.角点.斑点). 一.Harris角点检测是一种直接基于灰度图像的角点提取算法,稳定性较高,但是也可能出 ...

  2. OpenCV亚像素角点cornerSubPixel()源代码分析

    上一篇博客中讲到了goodFeatureToTrack()这个API函数能够获取图像中的强角点.但是获取的角点坐标是整数,但是通常情况下,角点的真实位置并不一定在整数像素位置,因此为了获取更为精确的角 ...

  3. Paper | 亚像素运动补偿 + 视频超分辨

    目录 1. ABSTRACT 2. INTRODUCTION 3. RELATED WORKS 4. SUB-PIXEL MOTION COMPENSATION (SPMC) 5. OUR METHO ...

  4. OpenCV亚像素级的角点检测

    亚像素级的角点检测 目标 在本教程中我们将涉及以下内容: 使用OpenCV函数 cornerSubPix 寻找更精确的角点位置 (不是整数类型的位置,而是更精确的浮点类型位置). 理论 代码 这个教程 ...

  5. opencv亚像素级角点检测

    一般角点检测: harris cv::cornerHarris() shi-tomasi cv::goodFeaturesToTrack() 亚像素级角点检测是在一般角点检测基础之上将检测出的角点精确 ...

  6. 【工程应用七】接着折腾模板匹配算法 (Optimization选项 + no_pregeneration模拟 + 3D亚像素插值)

    在折腾中成长,在折腾中永生. 接着玩模板匹配,最近主要研究了3个课题. 1.创建模型的Optimization选项模拟(2022.5.16日) 这两天又遇到一个做模板匹配隐藏的高手,切磋起来后面就还是 ...

  7. Firemonkey Bitmap 设定像素颜色 Pixel

    VCL 和 Firemonkey 的 Bitmap 处理像素的方式不相同,下例为将图片内不是「白色」的像素全部改成「黑色」: procedure TForm1.Button1Click(Sender: ...

  8. OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  9. Opencv 亚像素级别角点检测

    Size winSize = Size(5,5); Size zerozone = Size(-1,-1); TermCriteria tc = TermCriteria(TermCriteria:: ...

随机推荐

  1. 转: jquery.qrcode.js生成二维码插件&转成图片格式

    原文地址: https://blog.csdn.net/u011127019/article/details/51226104 1.qrcode其实是通过使用jQuery实现图形渲染,画图,支持can ...

  2. node-sass:npm install node-sass --save

    从git上拉下来的项目,要先安装依赖, 再运行. 缺少node-sass:npm install node-sass --save

  3. 19.struts-配置详解.md

    目录 1.package name extends abstract namespace 2.action name class method 3.result name type 标签体 <p ...

  4. 12.常用类简单介绍.md

    目录 1.Scanner类 2.System类 4.Object类和工具类 5.StringBuffer类和StringBuilder类 6.Math类 7.Random类和ThreadLocalRa ...

  5. 18.2 不同用户 不同颜色光标 redis

    上次,我们完成了 change 这个event 通过 collaborationsrvice 与 server 进行 sockrt io 将 client端的监听的 change 发给 server ...

  6. 把Swift中的String转成NSString ,获取NSString的方法

    1.0 在Swift中的 String 并没有提供什么方法,直接把它自身转变成 Int .Float 等,而在OC中我们就可以这样  "123".integerValue 来获取它 ...

  7. spring boot 中使用filter

  8. hadoop-2.7.3完全分布式部署

    一.环境介绍      IP       host JDK linux版本 hadop版本 192.168.0.1 master 1.8.0_111 centos7.2.1511 hadoop-2.7 ...

  9. mysql-5.5.20预编译安装

    1.MYSQL数据库概念 1)MYSQL是一款关系型数据库系统,数据之间有互相联系,互相的关联和调用的. 2)MYSQL数据用于存储:WEB网站用户名和密码等 3)MYSQL存储数据库是通过二维表格形 ...

  10. webui-popover 一个轻量级的jquery弹出层插件

    该提示框插件可以和Bootstrap完美结合,但是并不一定需要和Bootstrap一起使用.它支持IE7以上的浏览器. 首先要引入需要的css  js  文件 <link rel="s ...