hallo,
ich bin kein Profi-Programmierer und habe jetzt eine Aufgabe, ich habe ein Frame und darauf sind reflektierende Kugelmarkern! Ich soll die Markern automatisch erkennen! an Hand der Helligkeit kann ich die Punkte von den Markern teilweiser erkennen, aber ich brauche die ganze Kugel zu haben!!! zum Visualisierung benutze ich VTK und ihre Funktionen und Programierumgebung ist VisualStudio 6.0!
kann jemand mir was verraten? ich komme nicht weiter!! :(
Grüße
Chakhi
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
würd dir ja gerne helfen, aber bei deinen Ausdrücken versteh ich nur Bahnhof. Ich versuchs mal so:
Du hast ein Bild ("Frame"?), und sollts darin Kreise finden ("reflektierende Kugelmarkern"?). Ein paar Punkte findest du, aber nicht die ganzen Kreise.
Wie wärs wenn du den erkennunggschwellwert langsam senksts und zusammenhängende Flächen auf Kreisform prüfst?
Oder du spuckst mal ein bischen Code aus, damit man sich ein besseres Bild von deinem Problem machen kann
hi,
also ich versuche das Problem besser zu beschreiben: ich habe ein abgescanntrs Model und darau sin Kugeln, die Kugeln reflektiren! das Model wird als ein Polygon gelesen und ich habe alle Farbwerte und auch x-, y- und z-Koordinaten von den Punkten! Ich habe jetzt auch die Breiche gefunden, wo die Kugelen sind! also ich habe jetzt das Bild dunkel gemacht und nur die hellen bereichen von den Kugeln sind zu sehen! aber das sind keine Kreise sindern Halbkreise (eigentlich Halbkugel)
Auf meinem Bild habe ich jetzt 3 Verschidene Mengen von diesem Pnktwolken und möchte gerne jetzt die Kugelen ganz regenerieren anhand der sichtbaren Punkten!
Radius von meiner Kugel ist auch bekannt, 1cm!
hier lese ich die Punkte und finde die Punktwolken die den Kugeln gehören:
.
.
.
union bildpunkt
{
unsigned long p;
unsigned char b[4];
};
bildpunkt pixel;
for (long int i = 0; i width * cam3d->height; i++)//das gesamte bild
{
if (cam3d->vtx[i].position.x == INVALID_DATA_3D)
{
/* an dieser xy Position keine z Tiefeninfo gemessen */
}
else
{
// KOORDINATE
punkt[0]=cam3d->vtx[i].position.x;
punkt[1]=cam3d->vtx[i].position.y;
punkt[2]=cam3d->vtx[i].position.z;
punkte->InsertPoint(pkt_id,punkt[0],punkt[1],punkt[2]);
// FARBWERT
pixel.p = c_image->pixels[i]; /*Alternativ: punktanzahl-i*/
r=pixel.b[3];
g=pixel.b[2];
b=pixel.b[1];
a=255;
// std::cout if ((r {
color->InsertTuple1(pkt_id,1);
}
else
{
//.... hier müssen die hellen Punkten bearbeitet werden!
}
}
pkt_id++;
}
}