[Boards: 3 / a / aco / adv / an / asp / b / biz / c / cgl / ck / cm / co / d / diy / e / fa / fit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mu / n / news / o / out / p / po / pol / qa / r / r9k / s / s4s / sci / soc / sp / t / tg / toy / trash / trv / tv / u / v / vg / vp / vr / w / wg / wsg / wsr / x / y ] [Home]
4chanarchives logo
How to restore 2d object from 3d world
Images are sometimes not shown due to bandwidth/network limitations. Refreshing the page usually helps.

You are currently reading a thread in /sci/ - Science & Math

Thread replies: 7
Thread images: 3
File: 0CDa4.png (9 KB, 593x397) Image search: [Google]
0CDa4.png
9 KB, 593x397
Im writing an app to read qr-like codes. Each code has a couple of identification points, so app can:
1. find em in the photo
2. check how their positions are different from original structure
3. calculate rotation, translation, scale
4. restore whole code by untransforming
5. read the data lying between id points

Its all simple as long, as the photo is taken perpendicularly. When the "projection" is tilted from the vertical by a few degrees the algorithm dramatically loses efficiency.

The question is: what operation/matrix do I need to bring the 2d object back to 2d surface from 3d world?

pic related, sample perspective
>>
File: projective transform.jpg (46 KB, 643x218) Image search: [Google]
projective transform.jpg
46 KB, 643x218
>>7795891
>3. calculate rotation, translation, scale

These (+ shearing) are just affine transformations. You need a projective transformation.

>5. read the data lying between id points

I hope you're using bicubic/bilinear interpolation and not nearest neighbor.
>>
Many thanks!

Think I'll get away without interpolation. I don't expect big angles and app is meant only to read binary sequences basing on areas' average brightness, so single pixels shouldn't be crucial. Still a very valueable nice!

> and not nearest neighbor.

What do you mean by that?
>>
notice*
>>
File: perspectivetransformations.jpg (413 KB, 1280x926) Image search: [Google]
perspectivetransformations.jpg
413 KB, 1280x926
I needed to do something like that in a job. Its actually pretty easy if you know the the transformed and original points.

I used a python module:
http://scikit-image.org/docs/dev/api/skimage.transform.html#skimage.transform.ProjectiveTransform

But heres how you implement it from grounds up:
http://stackoverflow.com/questions/14177744/how-does-perspective-transformation-work-in-pil

Qt has functions to do the same
>>
>>7796108
Nearest neighbor interpolation doesn't produce a nice image.
>>
Look up image registration techniques, namely affine, non rigid, interpolation and similarly metrics
Thread replies: 7
Thread images: 3

banner
banner
[Boards: 3 / a / aco / adv / an / asp / b / biz / c / cgl / ck / cm / co / d / diy / e / fa / fit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mu / n / news / o / out / p / po / pol / qa / r / r9k / s / s4s / sci / soc / sp / t / tg / toy / trash / trv / tv / u / v / vg / vp / vr / w / wg / wsg / wsr / x / y] [Home]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.
If a post contains personal/copyrighted/illegal content you can contact me at [email protected] with that post and thread number and it will be removed as soon as possible.
DMCA Content Takedown via dmca.com
All images are hosted on imgur.com, send takedown notices to them.
This is a 4chan archive - all of the content originated from them. If you need IP information for a Poster - you need to contact them. This website shows only archived content.