亚像素Sub Pixel
亚像素Sub Pixel
评估图像处理算法时,通常会考虑是否具有亚像素精度。
亚像素概念的引出:
图像处理过程中,提高检测方法的精度一般有两种方式:一种是提高图像系统的光学放大倍数和CCD相机的分辨率能力;另一种是引入亚像素细分技术来弥补硬件的不足以提高图像系统的分辨率。
如使用亚像素细分技术将精度提到到0.01像素,就相当于提高了100倍的图像系统分辨率。
[分辨率可以从显示分辨率与图像分辨率两个方向来分类。
优点:大大节省系统的硬件投入成本,降低技术应用的难度,扩大其应用范围。
亚像素细分技术最早是由Hueckel M F在a local visual operator which recognizes edges and lines中提出。目前此技术已取得了很好的成果。

亚像素定义:
像素是成像面的基本单位也是最小单位,通常被称为图像的物理分辨率。
如130万像素为1280*1024;
如果成像系统要显示的对象尺寸小于物理分辨率时,成像系统是无法正常辨识出来的。
实际上,亚像素细分算法是软件上对物理分辨率的近似优化结果。
例如:某CMOS成像芯片,其像素间距为4.5um。在成像时,对物理世界中连续的图像进行了离散化处理,这时成像面上每一个像素点只代表其附近的颜色。
而两个像素之间有4.5um的距离,在宏观上可以看作是连在一起的,但在微观上它们之间还有无限更小的东西存在,是两个物理像素之间的“像素”,这些更小的东西就称为“亚像素”。
【注】:实际上,“亚像素”应该是存在的,只是硬件上没有比像素更细微的传感器把它检测出来而已,于是在软件上把它可以近似地计算出来。
亚像素精度是指相邻两像素之间细分情况。输入值通常为二分之一,三分之一或四分之一。这意味着每个像素将被分为更小的单元从而对这些更小的单元实施插值算法。例如,如果选择四分之一,就相当于每个像素在横向和纵向上都被当作四个像素来计算。因此,如果一张5x5像素的图像选择了四分之一的亚像素精度之后,就等于创建了一张16x16的离散点阵,进而对该点阵进行插值。
插值: 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。插值:用来填充图像变换时像素之间的空隙。
简单示例来说明一下:
如下图所示:
较大的点是真实的物理像素点,在物理像素点之间较小的点是亚像素点。
假设:在理想成像条件下,一个点经过数字化后,在数字图像上表现为四个物理像素点的矩形,下图所示,左上角的四个标记1,2,3,4围起来的矩形所示。
如果取整像素值作为目标的中心坐标,
则与采用亚像素方法求出的中心坐标相差0.5个物理像素。
亚像素算法的建立和选择:
亚像素定位算法的前提条件是:目标不是孤立的单个像素点,而必须是由一定灰度分布和形状分布的一系列像素点组成。
一般要经过三个步骤:
① 粗定位过程:
对检测的目标进行初步定位,得到像素的精度;
② 确定搜索范围:
为了提高精度和降低运算量,在目标位置附近选择合适大小的小领域区域作为分析的搜索区域。
③ 细定位过程
根据区域特点,选择合适的亚像素算法进行细定位分析以得到亚像素的精度。
亚像素细分算法
①:几何方法
利用图像中某一目标的几何特征得到亚像素的测量数据,一般是规则形状的目标,如圆,三角形、正方形等形状。
常见的几何方法有形心法和灰度重心法。
形心法是对图像中圆、椭圆和矩形等中心对称的目标进行高精度定位的最简单的亚像素算法。
由于形心法是根据被测目标的几何特性来确定位置,所以需要对图像进行二值化运算,识别 出要处理的目标区域。同时,此算法也要求目标图像的干扰噪声尽可能小,这样就不会产生 太大的误差,一般可进行图像预处理来减少误差的产生。当目标图像的对比度较好时,形心法的精度可以达到0.1个像素。
灰度重心法是基于形心法的基本原理而形成的常用亚像素算法。
在图像的亚像素级边缘提取中,它看成是以灰度或灰度的导数为权值的加权重心。它的好处在于算法充分利用了对称目标中每一点的灰度值,通常可获得比形心法更高的定位精度。
②:矩估计方法
矩估计方法是目前亚像素算法中研究最广泛,应用最多的方法。由于矩是基于积分的运算, 因此矩也被认为是对噪声不敏感的稳定特征,同时矩还具有被测目标的矩特性在成像前后 保持不变的性质。根据矩的这种显著特点可以采用模板运算的方式对物体形状的边缘进行 亚像素细分。常见的算法有空间矩、灰度矩和ZOM正交矩等。
③:插值法
线性插值是插值算法中最简单的一种。毫无疑问,它是通过等间隔的线性插值算法来实现对边缘过渡的细分。因此,其算法最为简单,速度快,但精度也不高。
多项式插值法则改善了线性插值的缺陷,它采用了多项式插值函数来对边缘进行亚像素细分。
实践中,
许多算法,都具有亚像素精度;对算法进行评估的一个指标是是否具有亚像素精度。
这是什么意思呢?
可以这样理解:图像采用某种算法,一般得出的像素坐标为整数int(x,y);但是如果得出的像素坐标不是整数如float(x,y);即数值计算的结果不为整数;可以说成算法具有亚像素精度(Sub Pixel Accuracy)的优点。
计算的数值比整数值更为精确,如果需要得出整数,可以把返回的小数值近似为最接近的整数。
亚像素Sub Pixel的更多相关文章
- 寻找Harris、Shi-Tomasi和亚像素角点
Harris.Shi-Tomasi和亚像素角点都是角点,隶属于特征点这个大类(特征点可以分为边缘.角点.斑点). 一.Harris角点检测是一种直接基于灰度图像的角点提取算法,稳定性较高,但是也可能出 ...
- OpenCV亚像素角点cornerSubPixel()源代码分析
上一篇博客中讲到了goodFeatureToTrack()这个API函数能够获取图像中的强角点.但是获取的角点坐标是整数,但是通常情况下,角点的真实位置并不一定在整数像素位置,因此为了获取更为精确的角 ...
- Paper | 亚像素运动补偿 + 视频超分辨
目录 1. ABSTRACT 2. INTRODUCTION 3. RELATED WORKS 4. SUB-PIXEL MOTION COMPENSATION (SPMC) 5. OUR METHO ...
- OpenCV亚像素级的角点检测
亚像素级的角点检测 目标 在本教程中我们将涉及以下内容: 使用OpenCV函数 cornerSubPix 寻找更精确的角点位置 (不是整数类型的位置,而是更精确的浮点类型位置). 理论 代码 这个教程 ...
- opencv亚像素级角点检测
一般角点检测: harris cv::cornerHarris() shi-tomasi cv::goodFeaturesToTrack() 亚像素级角点检测是在一般角点检测基础之上将检测出的角点精确 ...
- 【工程应用七】接着折腾模板匹配算法 (Optimization选项 + no_pregeneration模拟 + 3D亚像素插值)
在折腾中成长,在折腾中永生. 接着玩模板匹配,最近主要研究了3个课题. 1.创建模型的Optimization选项模拟(2022.5.16日) 这两天又遇到一个做模板匹配隐藏的高手,切磋起来后面就还是 ...
- Firemonkey Bitmap 设定像素颜色 Pixel
VCL 和 Firemonkey 的 Bitmap 处理像素的方式不相同,下例为将图片内不是「白色」的像素全部改成「黑色」: procedure TForm1.Button1Click(Sender: ...
- OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- Opencv 亚像素级别角点检测
Size winSize = Size(5,5); Size zerozone = Size(-1,-1); TermCriteria tc = TermCriteria(TermCriteria:: ...
随机推荐
- How to Pronounce the 50 States
How to Pronounce the 50 States (1/4) Share Tweet Share Tagged With: Places The US state names can be ...
- 使用xshell xftp连接centos的过程。
1 配置网络 登录Centtos系统,配置网卡. cd 空格/etc/sysconfig/network-scripts 回车键. ls 查看文件 vi ifcig-eth0 编辑这个文件 修改为 ...
- Idea使用Maven异常 --- Maven网络代理设置
在conf/setting.xml和m2/repository/setting.xml中加入: <proxies> <!-- proxy | Specification for on ...
- Tomcat运行javaweb项目时出现的一个bug
Stacktrace:with root cause java.net.ConnectException: Connection refused:........................... ...
- 面试真题--------spring源码解析AOP
接着上一章对IOC的理解之后,再看看AOP的底层是如何工作的. 1.实现AOP的过程 首先我们要明白,Spring中实现AOP,就是生成一个代理,然后在使用的时候调用代理. 1.1 创建代理工厂 ...
- Java中的BigDecimal类精度问题
bigdecimal 能保证精度的原理是:BigDecimal的解决方案就是,不使用二进制,而是使用十进制(BigInteger)+小数点位置(scale)来表示小数,就是把所有的小数变成整数,记录小 ...
- Centos7安装出现的问题:找不到安装源或者检查软件配置出错
安装启动时到以下界面 此时,按一下Tab键,将会出现在屏幕下方出现这一串文字 vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x2 ...
- Shader基础(固定管线着色器)
在Shader的编码中,要养成不加空格的习惯,否则会有时候出现一些错误 固定管线着色器: 优点:实现简单 缺点:处理的效果比较差 //设置Shader的路径 Shader "MyFixedS ...
- IN_ORDER_PLANNING、IN_BOM_CHANGE
一.IN_ORDER_PLANNING 新增一个IN表(IN_ORDER_PLANNING,把ZFP037和ZFP026整合成一张表,标示哪些订单的是真验货/假验货.VIP真验货/假验货订单) ORD ...
- metasploit framework(十):SSH扫描、爆破
SSH版本扫描 SSH密码爆破 设置爆破字典 run开始