 |
|
|
 |
|
|
 |
 | Bitmap  Sangeetha_J | 21:04 25 Jan '07 |
|
 |
Hi Jonathan,
I came to know your article while searching for concepts related to contour. Am working as a software engineer in Visual C++ for the past two years. No one is here for me to train. Am reading for myself and doing things as much as my effort makes it possible. Now am in a need to accomplish the following one:
1. I need to show a bitmap in a full screen mode 2. Then i need to scatter that bitmap here and there all over the screen and then have to reassemble it to make it return back to its original form.
I had posted one message asking about this. Then i got the reply to look for finding contours of that bitmap and then to carry on from there. One more reply suggested me to study about 3DMax.
Now i posted this to have your ideas and suggestions. If there any book for me to read and proceed, please refer to me. I am ready to read and implement the procedure.
Thanking you,
With Regards, Sangeetha.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi,
My email id is Anj.Sangeetha@gmail.com. Looking forward for ur reply through code project or my gmail account.
With Regards, Sangeetha.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi,
I have notice that in certain cases, the "CompactStrip" method does an infinite loop. I Have also notice that if you want to draw functions as "sin(x)" you miss somes strips ! If anyone has a correction for that. For infinite loop problem,I propose a correction in the CompactStrip method :
//////////////////////// Remplace line 326-344: //////////////////////// // Copying all for (pos2=newList.begin(); pos2 != newList.end(); pos2++) { pStrip=(*pos2); CLineStrip::iterator pos1 = pStrip->begin(),pos3; while (pos1!=pStrip->end()) { pos3 = pos1; pos3++; if ( (*pos1) == (*pos3)) pStrip->erase(pos3); else pos1++; } //if (!(pStrip->front()==pStrip->back() && pStrip->size()==2)) if (pStrip->size()!=1) m_vStripLists[i].insert(m_vStripLists[i].begin(),pStrip ); else delete pStrip;
//////////////////////// By this : //////////////////////// // Copying all for (pos2=newList.begin(); pos2 != newList.end(); pos2++) { pStrip=(*pos2); CLineStrip::iterator pos1 = pStrip->begin(),pos3; CLineStrip* copyStrip = new CLineStrip; while (pos1!=pStrip->end()) { pos3 = pos1; pos3++; if ( (*pos1) != (*pos3)) { copyStrip->insert(copyStrip->end(),*pos1); } pos1++; } //if (!(pStrip->front()==pStrip->back() && pStrip->size()==2)) if (copyStrip->size()>1) m_vStripLists[i].insert(m_vStripLists[i].begin(),copyStrip ); else delete pStrip; delete copyStrip;
|
| Sign In·View Thread·PermaLink | 1.50/5 |
|
|
|
 |
|
 |
I'm running XP and using VisualC++7.1. I've found that the demo program (both the precompiled exe, and the source when i build it) will crash, the first time it tries to recompute the contours. To reproduce, simply start the program and press 'e'.
In the debugger, it shows the problem is in ListContour.cpp, line 48: ASSERT(m_vStripLists.size() == GetNPlanes()); these values are 20 and 21, so the ASSERT fails.
Does anyone have a solution? This code looks nice but a crashing demo doesn't bode well.
|
| Sign In·View Thread·PermaLink | 1.83/5 |
|
|
|
 |
|
 |
Hi Jonathan de Halleux, Belgium.
I am runa. I am from Canada. I am doing my Mastres in Computer Science. I saw your great work. I thought you may help me to solvemy problem. Part of my thesis is to draw contour in a brain image using openGL and C++. the image is a monotone image. I do not know how should I start. Can you give me some guideline? I will be grateful.
Runa
|
| Sign In·View Thread·PermaLink | 1.83/5 |
|
|
|
 |
|
 |
hello,
does any one a decent algorithm for the extraction/delineation of feature lines e.g. ridges, channels etc. using contour-shapes?
Any comments will be much appreciated.
sanjay.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
hello i am working on a Image Processing project, i need algo/code on morphology,finding skeleton of a video camera image,Regional descriptors.... can anybody plz guid me my eamil id is prit_me@hotmail.com
VC++
|
| Sign In·View Thread·PermaLink | 1.00/5 |
|
|
|
 |
|
|
 |
|
|
 |
 | Help!  Wang_lei | 23:10 5 Sep '02 |
|
 |
I have a series of 3 dimension points,such as (x,y,z).I want to know how to get my Function(double x, double y){ ?????? }???? thanks !
Good boy!
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
 | Nope  Jonathan de Halleux | 22:15 15 Oct '02 |
|
|
 |
|
|
 |
|
 |
If you have a grid of (x,y,z) points, try linear (or, maybe, spline) interpolation between points of the grid.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Thanks a lot for providing the algorithm and codes! I found they're excellent for image display, but to use the contours to do some real calculation, CListContour::CompactStrips() has to be modified to 1) erase redundant points and strips, 2) connect seperate parts of one closed curve into one CLineStrip. Case 2) happpens when the function is irregular on the scale not much larger than that of the second grid. End points of neighboring strips can be seperated about several m_dDx or m_dDy. So the original MergeStrips doesn't work here. 
|
| Sign In·View Thread·PermaLink | 3.00/5 |
|
|
|
 |
|
 |
Did you already do those improvement ?
I haven't got time anymore to play with contours... If you're willing to contribute send me your notification and I'll update the article.
|
| Sign In·View Thread·PermaLink | 2.00/5 |
|
|
|
 |
|
 |
Sure, I added several functions to CListContour for my research purpose, and compiled my program under linux. Besides, there is one possible bug in CContour, once the function SetPlanes is called the pointer m_pPlanes points to memory outside the contour object. When this function is called again or the deconstructor is called, 'delete []m_pPlanes' can cause an error, at least in linux. So I also modified SetPlanes. I'll send you the modified files.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
 | Updated  Jonathan de Halleux | 2:10 31 Jul '02 |
|
 |
Update your code, thanks for contributing.
Anyway, I transformed double* m_pPlanes to vector m_vPlanes, nicer and safer.
Cheers,
Jonathan de Halleux, Belgium.
|
| Sign In·View Thread·PermaLink | 1.00/5 |
|
|
|
 |
|
|
 |
|
 |
You should modify yourself the CContourGL class. The problem is to detect closed linestrip and open line strip. Only closed one, can be filled.
I haven't though about the order of filling,
Jonathan de Halleux, Belgium.
|
| Sign In·View Thread·PermaLink | 1.50/5 |
|
|
|
 |
|
|
 |
|
 |
Filling contours can be tricky since you have open endedness at the boundary of the surface or you may have contours pinching together (or maybe even crossing due to the problems inherent in display discrete data points). You can try a simple flood fill, or you can take consequetive contours and join them up at the ends to form a polygon and then draw the polygon with a fill colour, or you can go all out and discretise the surface using triangulation or some other surface discretisation method and fill each element individually.
My classes in the article "Classes for computational geometry" provide a function to perform Delauney Triangulation that may be of help if you want to go the full blown method.
If you're bored then take a look at DEMView/DEMMaker[^] for an illustration of this in action.
cheers, Chris Maunder
|
| Sign In·View Thread·PermaLink | 5.00/5 |
|
|
|
 |
|
 |
That's great stuff ! I'll integrate in CListContour so that it spits polygons...
By the way, what king of Delaunay tri are you using? Is it weighted delaunay? Can it be refined locally? Do you have reference?
Jonathan de Halleux, Belgium.
|
| Sign In·View Thread·PermaLink | 1.00/5 |
|
|
|
 |
|
 |
I'm reasonably sure I got the algorithm out of 'Computational Geometry in C' by joseph O'Rourke.
cheers, Chris Maunder
|
| Sign In·View Thread·PermaLink | 3.00/5 |
|
|
|
 |