Skip to content

IN2-ViAUn/Distort-Image

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distort image

Introduction

本项目旨在实现在正常图形中插入鱼眼畸变/桶形畸变/枕形畸变三种类型的畸变 现已经可以实现在整个图形上做畸变,并且每种畸变下都有7DoV(degree of freedom)
下一步的计划是实现在正常图形的任意位置上插入任意类型的畸变

主要包含两个模块:

  • virtualCam.py:用来创建一个可以实现径向畸变、哈哈镜畸变的虚拟相机
  • fisheyeCam.py:用来创建一个可以实现鱼眼畸变的虚拟相机

使用可以直接参照introDistort.py文件,不必关注实现细节(可能需要一个不断调参的过程才能得到自己想要的效果)

值得声明的是,本项目的鱼眼部分的实现大部分来自:Universal Semantic Segmentation for Fisheye Urban Driving Images的官方代码

Requirement:

安装依赖包: pip install -r requirement. txt

Usage

  • 将图片放入images文件夹中

  • 调用introDistort中的test_distortion函数

    # 测试images下的某一张图片
    test_distortion("000712.jpg")

​ 也可以通过introDistort下的fisheye_distortion, barral_distortion, pincushion_distortion函数来实现批量处理

Results

Fisheye Distortion

Barrel Distortion

Pincushion Distortion


Further Discussion

上面的三种畸变在实现过程本质上都是在二维空间操作像素点

但是是否可以通过在三维空间中操作像平面的方式来实现畸变

Barrel Distortion by Warping Mesh

src->dst: plane.Z -= 100 * np.sqrt((plane.X * 1.0 / plane.W) ** 2 + (plane.Y * 1.0 / plane.H) ** 2)


Pincushion Distortion by Warping Mesh

src->dst:plane.Z += 20*np.sin(2*np.pi*((plane.X-(plane.W)/4.0)/plane.W)) + 20*np.sin(2*np.pi*((plane.Y-plane.H/4.0)/plane.H))

About

实现图形的畸变处理

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages