Asking for some suggestion

Hello, I am going to work with human intestine model. A pill cam will pass through the intestine and look for any abnormalities inside the intestine. First I need to figure out some suitable modelling technic depending on the data. But the problem is the pill cam. It will move through the intestine and I need to model every cross section while the pill cam taverses through the intestine. Could anyone give me some suggestion ? I think at first I need to find out the medial axis of the intestine and then pass the pill cam along the medial axis. I need some suggestion as how to find out the medial axis for a complicated data like intestine. Could you provide any suggestion or help? Thanks in advance.

I would look at this as a camera following a path and always looking forward - think of a first person shooter following a path or a drive down a road - the intestine path could be constructed from a set of quadratic curve equations like bezier

Hi, thank you very much for the suggestion. I am a bit confused about finding out the medial axis of human intestine. As though tubular in shape, original data may not be able to detect it. Could any one give me some suggestion regarding this?
Thanks in advance.

I don’t know if this is any help, but I actually can’t think of a way to find the medial axis without first finding the cross-section. I believe the cross-section of minimum area will give a plane who’s normal will be the medial axis direction and the centriod of that cross-section will give you position in space of the axis. Assuming you start with a optimal cross-section, moving a small distance will require only a small angular span to test the cross-sections of the next location. But this method sounds very computationally intensive.

This might help - but it assumes you have the intestine cross-sections.

Are you planning to create a medial axis of the longitudinal cross-section?

Yes, I think I need to pass the camera through the X-section of the intestine.

If you are only worry about the cross-section the medial axis isn’t of much use I think what you want is the centroid of the polygon defining the cross-section. Moving from centroid to centroid of cross-sections will keep your camera roughly centered as you move down the intestine. You will need cross-sections at frequent points along the intestine (especially on the bends) for this to work.

What input data do you have?

I am waiting for data from doctors. I am still a bit worried about the X-section as a particular X-section may consist of several tubes, but at a time I am concerned with a particular tube, how to separate one tube from another. I am looking for some suitable method for finding out the x-sections at different positions.


I have attached the obj file. Now I need to trace path along the tubular model. How could that be done?

So you just have the obj mesh of the intestines. That make life more complex. Perhaps you could move a virtual object through the intestine with collision detections and record the successful path. Now you have a path that the camera can follow.

I am thinking about passing a small sphere and gradually inflate it to check which vertices in include and same time checking the distance from the sphere. If the center seems to be in the middle of two or more vertices, I can consider it a point in the approximate medial axis. How does the idea sound? Could any one give some more input about this or whether any simpler suggestion available? I know this is a trial and error methos. Thanks

Your idea sounds like it will work but you need to repeat it at intervals down the intestine and you would have to decide what is a good step size. My idea is basically the same except I would project a ray looking for a collision and then use a “hunt and peck” algorithm to find the next ray direction, keeping the longest ray as the next direction to follow. Combining the two may be even better where you calculate the ray length by using a sphere to following that ray until it collides with a intestine.

If this code only has to work for a specific model it is probably better to load the .obj into a 3d package and manually trace a path through it and export that path.

Thank you very much for the suggestion. Could you mention some 3D package convenient to deal with this model? I heard about blender, but never used it.

Blend is free and works fine. Carrara is cheap and quite good. Maya, 3D Studio are excellent and ridiculously expensive.

I’d try something like:

  1. remove all duplicate vertices
  2. manually choose several triangles from the start of the intestine, which form a ring
  3. repeat until no triangles left:
    3.1) pick the nearby triangle (which shares an edge edge with the previous triangle), which shares edges with as many known triangles.
    3.2) average the vertex positions of the last 3-4 triangles marked. Insert that position as a new camera position keyframe.
    3.3) optionally filter the resulting positions from 3.2, by removing keys that jump too forward. (if the next key is effectively moving the camera back).

Thanks every body for the suggestion. I want to start from some open edge as vertices at the open edge will form a ring and gradually stripping the vertices and creating new set of open edges.
But I need to do some pre processing to find the open edge at the very beginning. I would like to use Maya though I have never used it before for preprocessing purpose. I have attached one picture of my wire-framed model displayed using meshlab. I would like to disconnect those particular vertice-set as shown in figure and then start processing from that open edge. If I use Maya, can I do that kind of preprocessing and save that pre-processed model? Please let me know. As I never used any of these kind of tools, I am a bit worried whether it would be complicated to use it. Also I have limited time frame to submit my project.

I have not used Maya but all modelling tools have the ability to select a set of polygons (triangles) from a mesh and delete them; and all of them will export .objs

up cho bac dat hang