Image warping / distortion
来源:互联网 发布:飞鸽网络打印如何使用 编辑:程序博客网 时间:2024/06/06 00:00
from: http://paulbourke.net/miscellaneous/imagewarp/
Image warping / distortion
Written by Paul BourkeDecember 2002
This documents, primarily with examples, an image warping application that was originally developed to test the simulation of various lens types. There are a few key ideas with image transformations such as this.
The transformation that one needs is not the function that maps from the source image to the destination but the reverse. What is required is to find the source pixel associated with each pixel in the destination image. In general the image plane is considered to be a real valued function rather than a discrete pixel plane, this is particularly so when antialiasing is implemented.
The image coordinates are transformed from pixels (i,j) ranging from 0 to the width-1 and height-1 to normalised coordinates (x,y) ranging from -1 to 1, this is irrespective of the image proportions and it applies to both the source and destination image coordinates.
x = 2 i / width - 1
y = 2 j / height - 1A key ingredient for image quality is antialiasing. In the code given here, supersampling is used. That is, each pixel in the destination image is sampled a number of times, the resulting estimate from the source image are averaged (box filter is used here) to give a final estimate in the destination image.
Some transformation act upon the cartesian coordinates while other are radial (polar coordinates) in nature. The r,phi coordinates are as follows.
r = sqrt(x2 + y2)
phi = atan2(y,x)After the radial based warp the reverse transformation back to cartesian normalised coordinates is:
x = r cos(phi)
y = r sin(phi)
This application (imagewarp.c) is written as a UNIX utility that reads a TGA file (24 or 32 bit), performs the warping as specified by command line arguments and writes the resulting image as a TGA file to standard output (to be redirected to a file say).
imagewarp tgafilename [options]Options:-a n set antialias level (Default: 1)-w n width of the output image (Default: 500)-h n height of the output image (Default: width)-m n mapping type (Default: 0)-p1 n first parameter for mapping (Default: 0)-p2 n second parameter for mapping (Default: 0)-p3 n third parameter for mapping (Default: 0)-s n scale factor (Default: 1)-v debug/verbose mode (Default: off)
The following lists each of the image warping types supported, other warping function can readily be added.
Source imageThis is the test image: test.tga that is transformed into each of the images below.
r -> 2 arcsin(r) / pir -> rpp = 1.5r -> rp
p = 3x -> sign(x) x2
y -> sign(y) y2x -> x (1 - p r) / (1 - p)
y -> y (1 - p.r) / (1 - p)
p = 0.1x -> x (1 - p r) / (1 - p)
y -> y (1 - p.r) / (1 - p)
p = 0.3Method by H. Farid and A.C. Popescu for modest lens with good fit.
p = 0.4r -> p1 10r p2 - p1
p1 = 0.049
p2 = 1.280Janez Pers, Stanislav Kovacic An Alternative Model for Radial Distortion in Wide-Angle Lenses (Single parameter model)
p = 0.1Janez Pers, Stanislav Kovacic An Alternative Model for Radial Distortion in Wide-Angle Lenses (Single parameter model)
p = 0.3
- Image warping / distortion
- Image Warping
- FZU 1733 Image Distortion
- Image Warping --IDW/RBF
- FOJ--1733--Image Distortion--解题报告
- Distortion
- Image Warping-Morphing 实现人脸渐变
- DIBR-3D图像变换(3D Image Warping)
- 图像仿射变换及图像扭曲(Image Warping)
- 【图像处理】DIBR-3D图像变换(3D Image Warping)
- 【图像处理】DIBR-3D图像变换(3D Image Warping)
- 畸變(Distortion)
- U3D Distortion
- Distortion Correction
- Total Harmonic Distortion
- Lens Distortion Correction
- 畸变(Distortion)
- dynamic time warping (1)
- TO SOLVE THE ISSUE OF MySQLStartupItem.pkg missing from MySQL DMG
- 异步任务
- C++实验四【项目1:利用循环求和】求1000以内所有偶数的和
- 解决Debug JDK source 无法查看局部变量的问题方案
- EventBus使用详解(一)——初步使用EventBus
- Image warping / distortion
- C++ 读写txt文件
- Android Studio和Eclipse使用不同对比
- 多线程基础题目
- apache config httpd.conf file防止目录列表被浏览、敏感目录或文件限制IP访问
- 更改log4j的默认配置文件路径
- 未名湖旁的博雅塔
- Android 属性动画(Property Animation) 完全解析 (上)
- 串口DCB结构详解