PDA

View Full Version : conversion 2D images into 3d images



fuyu
01-05-2004, 02:39 PM
hi, this is my thesis title: conversion from 2D images to 3d images. with minimum level of programming language knowledge (and whatever language), i would like to open any suggestions on HOW should i do this project. I mean what language,programs, should i use, or whatever.

JanHH
01-05-2004, 03:31 PM
what do you want to do? create a 3d object from an image? this is not really possible.. at least, you need several images of the object, there is software which is able to convert them to a 3d object, here is one link: http://www.uzrtechnology.de

Theoretically, there is an infinite amount of 3d objects that can be created from one image.. maybe you should specify more exactly what you want to do.

Jan

01-05-2004, 07:58 PM
I have been working on using a series of images from an MRI scan of a brain and superimposing it using the transparency feature within OPENGL to get the depth aspect. Is this similar to what you require for your thesis?

fuyu
01-05-2004, 07:59 PM
ok, my supervisor ask me to work on an image; i.e. a backbone image:
http://www.geocities.com/faseok/left_lateral.txt

i am going to convert this flat 2D image into a 3d image:
-can be rotated
-can be viewed from different angle

or in other word, i am goin to create a software which can convert any 2D flat image into 3D form.

this project actually consists of two phases:
1) extract datasets from 2D image, i.e ( x,y,z) datasets
2) convert the datasets into 3d image.

however, i think that i am not capable to do the extraction part. so my supervisor allow me to do the extraction using any existing software. Hence i found a software which can extract (x,y,z) datasets from a 2d Flat image, i.e. imageDig(http://www.imagedig.com/). as a result, i got thousand lines of datasets(phew!)the datasets is automatically stored in text file (.txt)

now in my head, i am going to do a programming code which can read the text file(datasets) and remodel it again into 3D image.

i am plannging to do it using Microsoft Visual c++, using C++ and OpenGL.

so that's all my idea. is it ok? or do you have smarter idea? is my language choice is wise? I would really appreciate any advice and suggestions, and also help from anybody.


Thank you very much friends

[This message has been edited by fuyu (edited 01-05-2004).]

[This message has been edited by fuyu (edited 01-05-2004).]

fuyu
01-05-2004, 08:23 PM
Originally posted by William Tiu:
I have been working on using a series of images from an MRI scan of a brain and superimposing it using the transparency feature within OPENGL to get the depth aspect. Is this similar to what you require for your thesis?

yes ,
or idea was included in my literature review. that is bright idea too,: to superimpose a series of image to remodel a 3D object, and this is called volume rendering? or surface generation? is it?
LOL.. i know very little about these things, but i have to try.

can u elaborate more about your superimpose work and about the features you use in openGL? thank you

Thank you all for your replies, i wish to have more http://www.opengl.org/discussion_boards/ubb/smile.gif thank you

JanHH
01-06-2004, 02:05 PM
it is NOT possible to create a 3d model from *one* image. How should the parts that are not visible in the image be modelled? You need a lot of photos from different angles to do what you want to. Like the software I mentioned does.

Jan

fuyu
01-06-2004, 06:03 PM
Originally posted by JanHH:
it is NOT possible to create a 3d model from *one* image. How should the parts that are not visible in the image be modelled? You need a lot of photos from different angles to do what you want to. Like the software I mentioned does.

Jan

Yes JAn you are true.
But how can I find the datasets of the 'series' image. for example this image, am i right? :

http://www.cado.uwa.edu.au/kevin/spine/neck-4.gif

so if i have to put these pictures in a stack so that it can be reproduced as a backbone, am i right?

but HOW should i do this?

first, I am not going to use an existing program, because my thesis is to create my own software(software by definition is a series of program code that has been turned into application).

second, I have no idea what language or application should i do. at the moment i only have OpenGL and VC++ in my head.

third: to remodel the series of images above, i have to get the datasets of each pixel of the images in 3 dimensional-axis, am i right?thats another problem...HOW?

thank you for your concern.

john
01-06-2004, 10:51 PM
Hello,

not wishing to sound incredulous, but are you ~completely~ serious?
Firstly, the idea of a thesis is to surely write something novel of your own production; secondly, you presumedly have some of the skills involved in writing software, right? And finally, do you know how challenging computer vision is? I don't really understand how your question should even be asked in an opengl beginners forum like it has. To do what you want to do will probably require an insane amount of maths/compsci brain reboot on your part.

Having said that, though, here are some ideas of your particular problem. These are just some ideas, and probably how I'd go about thinking about it.

I'd think about trying to segment my images into interesting regions. If you haev an MRI scan then you'd have density information, so you could group pixels belonging to a similar density into regions. This is a problem about "image segmentation" (use google/citeseer/ieee/acm to look for information regarding image segmentation). Another way might be to treat your image slices a set of contours over time and use particle filters to track the contours.

Once you have a set of contours you could then construct a generalised cylinder by using these segmented regions as cross-sections of the cylinder (since you probably know the real world euclidean distance between the image slices).

This idea should work for some cases like your backbone analogy. You'd probably have issues with shapes that couldn't be modelled by a generalised cylinder, like your forearm where two bones are connected together. You'd also have to sort out ways of segmenting the images, which may or may not be easy depending on the quality of your data. At least you have the advantage of knowing a lot about your imaging device.

On a random side note: you can recover 3D information from a single image, e.g. http://www.cs.cmu.edu/~ph/869/papers/Criminisi99.pdf and http://www.cssip.edu.au/~danny/vision/shading.html.

cheers,
john

a student
12-15-2012, 10:23 AM
Can I get ur code for reference. I am also working on the same stuff.
I have been working on using a series of images from an MRI scan of a brain and superimposing it using the transparency feature within OPENGL to get the depth aspect. Is this similar to what you require for your thesis?

Aestivae
12-17-2012, 03:30 PM
No offense meant, fuyu, but I have to reiterate some of john's concerns. What field are you studying in? If you are "not capable to do the extraction part" and do not know what to do with the resulting data, you may want to reconsider your topic, since it is not a simple task.

You're talking about is a whole field of science in itself (computer vision). Generating 3D data from 2D images is a rather complex process, and there are many ways you could go about it.

The simplest method only works if you have a stack of cross sections; with each layer of these cross sectional images, you can generate a thin layer of your 3D model. Of course, you need a source for these cross sections, and this is mostly attained through CAT scan and MRI technology. This is generally how that data would be converted, and as such depends mostly on the source data quality.

Another method works by taking images from different angles of the exterior of an object. Given enough of these images and the right algorithms, you can get a 3D model of sorts; the results depend on the shape of the object and the level of detail you require (read as: this method doesn't work very well... yet).

A third method that's relatively new involves scanning over a single image and, based on the pixels in the image, calculating approximated normals. This is heavily dependent on your computer algorithm, and is something that is still under active research.

All of these methods simply (or not so simply) extract 3D data from 2D data. In computer vision (which I have studied and worked in for a few years), we often say: "Garbage in, garbage out". You cannot simply create meaningful data (a third dimension in your case) out of nothing; that meaningful data must be inferred somehow, whether that be from multiple images or lighting or whatever.

Also -- the software you mentioned (imagedig) performs a trivial task, from what I can see. All it does is turn the color or intensity value of each pixel into a third dimension, where a lighter color means a larger z value. This may be applicable for some purposes, but is only in a very literal sense turning 2D images into 3D. It is also very simple -- I'm currently working on a computer vision data visualization program, and programming what imagedig does took less than half an hour (I did not know of imagedig before you mentioned it, if it matters).

I guess my point is that, if I am understanding your purpose, you must be prepared for a lot of work ahead of you, and you most likely will not be able to rely on existing software. Based on your comments, it would seem you have little experience with computer vision and programming, and I would advise you to build your foundations through study and looking to existing research before continuing.