ub-Pixel
数码摄像机的成像面的分辨率以像素数量来衡量。隔行TV的分辨率是576x768个像素。 像素中心之间的距离有几个至十几个微米不等。为了最大限度利用图像信息来提高分辨率,有人提出了Sub-Pixel概念。意思是说,在两个物理像素之间还有像素,称之为Sub-Pixel,它完全是通过计算方法的出来的。这里提出计算方法。
如果原始图像是n行m列的,希望做k细分的Sub-Pixel,这样就有新的行N和列M,有
N = k*n
M = k*m
原来相邻4个像素包含的区域现在变成了(k+1)*(k+1)的区域了;要填满这个(k+1)*(k+1)的区域,实际上就是从一个小正方形映照到一个大正方形的过程。在数学上用双线性插值得算法可以轻松搞定。下面是算法的代码:
XYPNT qdot(
XYPNT d[4], //d[4] 顺时针排列
XYPNT a //含有要插入的点的位置
){
XYPNT r; //工作单元
int i;
float x0,y0,x1,y1; //
PNT z[4];
float ap,bt,ax,ay;
x0=d[0].q.x;y0=d[0].q.y;
x1=d[2].q.x;y1=d[2].q.y;
r=a;
ax=a.q.x;ay=a.q.y;
for(i=0;i<4;i++)z[i]=d[i].pnt;
ap=(ax-x0)/(x1-x0);bt=(ay-y0)/(y1-y0);
r.pnt.r=(1.-ap)*(1.-bt)*z[0].r+bt*(1.-ap)*z[3].r+ap*(1.-bt)*z[1].r+ap*bt*z[2].r;
r.pnt.g=(1.-ap)*(1.-bt)*z[0].g+bt*(1.-ap)*z[3].g+ap*(1.-bt)*z[1].g+ap*bt*z[2].g;
r.pnt.b=(1.-ap)*(1.-bt)*z[0].b+bt*(1.-ap)*z[3].b+ap*(1.-bt)*z[1].b+ap*bt*z[2].b;
return r;
}
其中数据结构:
struct PNT{BYTE b,g,r;}; //像素的颜色
struct DXY{short x,y;}; //像素的坐标
struct XYPNT{ //像素的全信息
DXY q;
PNT pnt;};
调用示例:
for(i=0;i<HEight;i++)for(j=0;j<WIdth;j++){
d[0].q.x=j*xf ; d[0].q.y=i*xf; d[0].pnt=*(buf+i*WIdth+j);
d[1].q.x=(j+1)*xf; d[1].q.y=i*xf; d[1].pnt=*(buf+i*WIdth+j+1);
d[2].q.x=(j+1)*xf; d[2].q.y=(i+1)*xf; d[2].pnt=*(buf+(i+1)*WIdth+j+1);
d[3].q.x=j*xf ; d[3].q.y=(i+1)*xf; d[3].pnt=*(buf+(i+1)*WIdth+j);
for(i0=0;i0<xf;i0++)for(j0=0;j0<xf;j0++){
aa.q.x=j*xf+j0;aa.q.y=i*xf+i0;
rr=qdot(d,aa);
*(Buf+aa.q.y*WIDTH+aa.q.x)=rr.pnt;
}
}
其中xf是插入亚像素的个数,也即放大倍数;Height和Width是原始图像的尺寸;HEIGHT和WIDTH是方大xf倍的尺寸;原始图片存放在buf中,目标图片存放在Buf中。附件目标图片01和目标图片02都是从原始图片00放大得到的。目标图片01是通过Sub-Pixel算法得到的;目标图片02是通过程序ACDSEE的缩放功能得到。双方都放大了25倍。目标图片01要优于目标图片02。
共1条
1/1 1 跳转至页
亚像素(Sub Pixel)
面阵摄像机的成像面以像素为最小单位。例如某CMOS摄像芯片,其像素间距为5.2微米。摄像机拍摄时,将物理世界中连续的图像进行了离散化处理。到成像面上每一个像素点只代表其附近的颜色。至于“附近”到什么程度?就很困难解释。两个像素之间有5.2微米的距离,在宏观上可以看作是连在一起的。但是在微观上,它们之间还有无限的更小的东西存在。这个更小的东西我们称它为“亚像素”。实际上“亚像素”应该是存在的,只是硬件上没有个细微的传感器把它检测出来。于是软件上把它近似地计算出来。本文给出了计算的方法和说明效果的例子。
关键词: 像素 Pixel
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |