Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is not good for my application. Thanx. ++
Jack
Hey Jack,
I use versions of this object [tracks] for my stuff: http://www.jaimeoliver.pe/archives/741
I know William is working on a new object for this same purpose and in doing so he caught a bug in mine and several opportunities for optimization. The object should be working however. Let me know if it does for you. Otherwise I'll give you my more primitive version called [best_match]
We're working to get a more definite solution. This is a kind of object that i think wold be of general use for pd users. So, I imagine other people have done similar objects???
In any case, use it, but hopefully, we'll have something more stable in the near future.
best,
J
On Fri, Feb 18, 2011 at 8:07 AM, Jack jack@rybn.org wrote:
Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is not good for my application. Thanx. ++
Jack
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On Fri, 18 Feb 2011, Jaime Oliver wrote:
We're working to get a more definite solution. This is a kind of object that i think wold be of general use for pd users. So, I imagine other people have done similar objects???
Matching nearest neighbours in general is a nice idea, but if you wanted something based on actual overlap of the detected areas, you can't do that with min/max data or centroïd data. That's why [#labelling] also outputs a version of the incoming grid in which the "1" regions have all been flood-filled with distinct integers (numbered from 2 upwards ; it can go well beyond 255 if needed).
However, I don't know any easy way to compare two images for overlap (in number of pixels), and I have not tried this yet (nor any other form of tracking of the found regions).
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
Well, the object is independent of centroid or min/max or overlap. isn' it? that just depends on the particular aim of each user. matching nearest neighbors remains a useful object to have...
That's why [#labelling] also outputs a version of the incoming grid in which the "1" regions have all been flood-filled with distinct integers (numbered from 2 upwards ; it can go well beyond 255 if needed).
I am not entirely sure what you mean by this...
best,
J
However, I don't know any easy way to compare two images for overlap (in number of pixels), and I have not tried this yet (nor any other form of tracking of the found regions).
_______________________________________________________________________ | Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
-- Jaime E Oliver LR
www.jaimeoliver.pe
858 750 0924 (cel) 858 202 1522 (home)
On Sun, 20 Feb 2011, Jaime Oliver wrote:
Well, the object is independent of centroid or min/max or overlap. isn' it? that just depends on the particular aim of each user. matching nearest neighbors remains a useful object to have...
Yes, it's useful. Now I'm talking about something else that might be useful and that you don't get in GEM.
That's why [#labelling] also outputs a version of the incoming grid in which the "1" regions have all been flood-filled with distinct integers (numbered from 2 upwards ; it can go well beyond 255 if needed).
I am not entirely sure what you mean by this...
I mean this : http://gridflow.ca/gallery/%23labelling_false_colors.png
Note that, as the flood-fills are just indices in the list of regions, I had to colour them with "random" colours, pretending that this is an indexed-colour image.
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
I mean this : http://gridflow.ca/gallery/%23labelling_false_colors.png
this link seems to be down.
J
On Mon, Feb 21, 2011 at 6:32 AM, Mathieu Bouchard matju@artengine.ca wrote:
On Sun, 20 Feb 2011, Jaime Oliver wrote:
Well, the object is independent of centroid or min/max or overlap. isn' it? that just depends on the particular aim of each user. matching nearest neighbors remains a useful object to have...
Yes, it's useful. Now I'm talking about something else that might be useful and that you don't get in GEM.
That's why [#labelling] also outputs a version of the incoming grid in which the "1" regions have all been flood-filled with distinct integers (numbered from 2 upwards ; it can go well beyond 255 if needed).
I am not entirely sure what you mean by this...
Note that, as the flood-fills are just indices in the list of regions, I had to colour them with "random" colours, pretending that this is an indexed-colour image.
_______________________________________________________________________ | Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
On Mon, Feb 21, 2011 at 18:25, Jaime Oliver jaime.oliver2@gmail.com wrote:
I mean this : http://gridflow.ca/gallery/%23labelling_false_colors.png
this link seems to be down.
http://gridflow.ca/gallery/%23labelling_false_colours.png
this works :)
-- buZz
On Mon, 21 Feb 2011, Jaime Oliver wrote:
I mean this : http://gridflow.ca/gallery/%23labelling_false_colors.png
this link seems to be down.
sorry, typo : http://gridflow.ca/gallery/%23labelling_false_colours.png
On Mon, Feb 21, 2011 at 6:32 AM, Mathieu Bouchard matju@artengine.ca wrote:
On Sun, 20 Feb 2011, Jaime Oliver wrote:
Well, the object is independent of centroid or min/max or overlap. isn' it? that just depends on the particular aim of each user. matching nearest neighbors remains a useful object to have...
Yes, it's useful. Now I'm talking about something else that might be useful and that you don't get in GEM.
That's why [#labelling] also outputs a version of the incoming grid in which the "1" regions have all been flood-filled with distinct integers (numbered from 2 upwards ; it can go well beyond 255 if needed).
I am not entirely sure what you mean by this...
Note that, as the flood-fills are just indices in the list of regions, I had to colour them with "random" colours, pretending that this is an indexed-colour image.
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
Indeed the link works fine.
Yes, it's useful. Now I'm talking about something else that might be useful and that you don't get in GEM.
Ok.
That's why [#labelling] also outputs a version of the incoming grid in which the "1" regions have all been flood-filled with distinct integers (numbered from 2 upwards ; it can go well beyond 255 if needed).
I mean this : http://gridflow.ca/gallery/%23labelling_false_colors.png
Note that, as the flood-fills are just indices in the list of regions, I had to colour them with "random" colours, pretending that this is an indexed-colour image.
I still don't think the problem is well explained. for example, what are "1" regions? i think this goes beyond the constant id aspect of it or are you arguing that nearest neighbor is not the only/wrong approach to the problem?
What I am getting is that you are obtaining regions of pixels based on some criterion, for each frame and then comparing how they overlap with the previous frame? To do this each of these groups need to be labelled? are you assigning constant id to the objects with maximum overlap?
best,
J
_______________________________________________________________________ | Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
On Mon, 21 Feb 2011, Jaime Oliver wrote:
That's why [#labelling] also outputs a version of the incoming grid in which the "1" regions have all been flood-filled with distinct integers (numbered from 2 upwards ; it can go well beyond 255 if needed).
I mean this : http://gridflow.ca/gallery/%23labelling_false_colors.png Note that, as the flood-fills are just indices in the list of regions, I had to colour them with "random" colours, pretending that this is an indexed-colour image.
I still don't think the problem is well explained. for example, what are "1" regions?
They are whatever regions have been selected. The "0" regions are the regions that aren't selected. You do this selection process using effects that turn your image into "0" and "1" colours, such as thresholding. That would usually be [# >=] or other comparator, possibly after other filters.
In the new version of http://gridflow.ca/help/%23labelling-help.html I am thresholding the result of red minus green minus blue, for example. Different situations have different criteria.
i think this goes beyond the constant id aspect of it or are you arguing that nearest neighbor is not the only/wrong approach to the problem?
I mean that the nearest neighbour of centroïds is not the only approach to getting constant ids. There are many possible ways of getting constant ids. I just haven't tried any yet.
What I am getting is that you are obtaining regions of pixels based on some criterion, for each frame
Yes, this is what I already do when I'm doing a multiblob detect without constant ids.
and then comparing how they overlap with the previous frame?
That's what I propose but haven't tried.
To do this each of these groups need to be labelled?
The first outlet outputs an indexed-colour picture in which each pixel is labelled with its region-number.
are you assigning constant id to the objects with maximum overlap?
I haven't done it, but this sounds like what I would do. There might be more creative things to do with those labelled pixels, but I think that the maximum-overlap thing would be something to be tried.
Actually, one can already build an overlap matrix quickly, using [#join] and [#draw_polygon + 1, draw point] (the polygon thing is a misnomer in point-mode.)
Finding the maxima in there is another business though.
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
i think this goes beyond the constant id aspect of it or are you arguing that nearest neighbor is not the only/wrong approach to the problem?
I mean that the nearest neighbour of centroïds is not the only approach to getting constant ids. There are many possible ways of getting constant ids. I just haven't tried any yet.
I completely agree with this, yet I think that there is some confusion.
one thing is the result of the tracking which can give you centroids and anything else. Another is getting those tracking ids and have them be continuous.
What I am getting is that you are obtaining regions of pixels based on some criterion, for each frame
Yes, this is what I already do when I'm doing a multiblob detect without constant ids.
Exactly
and then comparing how they overlap with the previous frame?
That's what I propose but haven't tried.
And this is a separate process that does not necessarily follow from using centroids or anything else.
are you assigning constant id to the objects with maximum overlap?
I haven't done it, but this sounds like what I would do. There might be more creative things to do with those labelled pixels, but I think that the maximum-overlap thing would be something to be tried.
Actually, one can already build an overlap matrix quickly, using [#join] and [#draw_polygon + 1, draw point] (the polygon thing is a misnomer in point-mode.)
well, the problem with maximum overlap is that an object might have moved faster than one would expect and it can show minimum overlap or no overlap and still be a desired match.
This case would make the sampling problem worse. While we might want things that have no overlap to still be matched, this would create new ids constantly...
J
I have also tested with gridflow (based on multiblob.pd) and there is the same problem (no possibility to follow a same blob). ++
Jack
Le vendredi 18 février 2011 à 14:07 +0100, Jack a écrit :
Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is not good for my application. Thanx. ++
Jack
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
http://cvlab.epfl.ch/research/body/surv/
GPL Licensed.
Am 18.02.2011 um 15:23 schrieb Jack:
I have also tested with gridflow (based on multiblob.pd) and there is the same problem (no possibility to follow a same blob). ++
Jack
Le vendredi 18 février 2011 à 14:07 +0100, Jack a écrit :
Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is not good for my application. Thanx. ++
Jack
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On Fri, Feb 18, 2011 at 9:42 AM, Max abonnements@revolwear.com wrote:
It looks good, but I can't find if there is a specific pd object to create continuity independent from the tracking part.
This is what I think is useful. do you know if it does?
J
/ http://cvlab.epfl.ch/research/body/surv/
GPL Licensed.
Am 18.02.2011 um 15:23 schrieb Jack:
I have also tested with gridflow (based on multiblob.pd) and there is the same problem (no possibility to follow a same blob). ++
Jack
Le vendredi 18 février 2011 à 14:07 +0100, Jack a écrit :
Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is not good for my application. Thanx. ++
Jack
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Thanx Max but i never make an external for Pd from c++. The example with ping-pong balls is what i am looking for.
Jaime, your external seems to be what i need, but i am a newbie in
compiling stuff. When i enter :
$ make
i get :
make: *** No rule to make target .pd_linux', needed by
pd_linux'.
Stop.
How do i fix this error ?
Thanx.
++
Jack
Le vendredi 18 février 2011 à 15:42 +0100, Max a écrit :
http://cvlab.epfl.ch/research/body/surv/
GPL Licensed.
Am 18.02.2011 um 15:23 schrieb Jack:
I have also tested with gridflow (based on multiblob.pd) and there is the same problem (no possibility to follow a same blob). ++
Jack
Le vendredi 18 février 2011 à 14:07 +0100, Jack a écrit :
Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is not good for my application. Thanx. ++
Jack
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
have you tried:
make tracks.pd_linux ?
J
On Fri, Feb 18, 2011 at 9:58 AM, Jack jack@rybn.org wrote:
Thanx Max but i never make an external for Pd from c++. The example with ping-pong balls is what i am looking for.
Jaime, your external seems to be what i need, but i am a newbie in compiling stuff. When i enter : $ make i get : make: *** No rule to make target
.pd_linux', needed by
pd_linux'. Stop. How do i fix this error ? Thanx. ++Jack
Le vendredi 18 février 2011 à 15:42 +0100, Max a écrit :
http://cvlab.epfl.ch/research/body/surv/
GPL Licensed.
Am 18.02.2011 um 15:23 schrieb Jack:
I have also tested with gridflow (based on multiblob.pd) and there is the same problem (no possibility to follow a same blob). ++
Jack
Le vendredi 18 février 2011 à 14:07 +0100, Jack a écrit :
Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is
not
good for my application. Thanx. ++
Jack
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
wait, are you in linux?
J
On Fri, Feb 18, 2011 at 10:04 AM, Jaime Oliver jaime.oliver2@gmail.comwrote:
have you tried:
make tracks.pd_linux ?
J
On Fri, Feb 18, 2011 at 9:58 AM, Jack jack@rybn.org wrote:
Thanx Max but i never make an external for Pd from c++. The example with ping-pong balls is what i am looking for.
Jaime, your external seems to be what i need, but i am a newbie in compiling stuff. When i enter : $ make i get : make: *** No rule to make target
.pd_linux', needed by
pd_linux'. Stop. How do i fix this error ? Thanx. ++Jack
Le vendredi 18 février 2011 à 15:42 +0100, Max a écrit :
http://cvlab.epfl.ch/research/body/surv/
GPL Licensed.
Am 18.02.2011 um 15:23 schrieb Jack:
I have also tested with gridflow (based on multiblob.pd) and there is the same problem (no possibility to follow a same blob). ++
Jack
Le vendredi 18 février 2011 à 14:07 +0100, Jack a écrit :
Do you know if there is an external to track multiblob with a
constant
ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is
not
good for my application. Thanx. ++
Jack
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
-- Jaime E Oliver LR
www.jaimeoliver.pe
858 750 0924 (cel) 858 202 1522 (home)
Yes, i use linux. Thanx it is working now. (it was a mistake from me : i tried with track.pd_linux, omiting the s !) I try now. ++
Jack
Le vendredi 18 février 2011 à 10:04 -0500, Jaime Oliver a écrit :
have you tried:
make tracks.pd_linux ?
J
On Fri, Feb 18, 2011 at 9:58 AM, Jack jack@rybn.org wrote: Thanx Max but i never make an external for Pd from c++. The example with ping-pong balls is what i am looking for.
Jaime, your external seems to be what i need, but i am a newbie in compiling stuff. When i enter : $ make i get : make: *** No rule to make target `.pd_linux', needed by `pd_linux'. Stop. How do i fix this error ? Thanx. ++ Jack Le vendredi 18 février 2011 à 15:42 +0100, Max a écrit : > http://cvlab.epfl.ch/research/body/surv/ > > GPL Licensed. > > > Am 18.02.2011 um 15:23 schrieb Jack: > > > I have also tested with gridflow (based on multiblob.pd) and there is > > the same problem (no possibility to follow a same blob). > > ++ > > > > Jack > > > > > > > > Le vendredi 18 février 2011 à 14:07 +0100, Jack a écrit : > >> Do you know if there is an external to track multiblob with a constant > >> ID (the ID doesn't change in the time when two or more blobs move). > >> For example, with [pix_multiblob], the ID of the blob is given by its > >> position relative to the lower left corner (or i'm wrong), so it is not > >> good for my application. > >> Thanx. > >> ++ > >> > >> Jack > >> > >> > >> _______________________________________________ > >> Pd-list@iem.at mailing list > >> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list > > > > _______________________________________________ > > Pd-list@iem.at mailing list > > UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list > _______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
-- Jaime E Oliver LR
www.jaimeoliver.pe
858 750 0924 (cel) 858 202 1522 (home)
So i tried and it seems to work fine with [pix_multiblob] ! :) No problems to report at this time. ++
Jack
Le vendredi 18 février 2011 à 16:25 +0100, Jack a écrit :
Yes, i use linux. Thanx it is working now. (it was a mistake from me : i tried with track.pd_linux, omiting the s !) I try now. ++
Jack
Le vendredi 18 février 2011 à 10:04 -0500, Jaime Oliver a écrit :
have you tried:
make tracks.pd_linux ?
J
On Fri, Feb 18, 2011 at 9:58 AM, Jack jack@rybn.org wrote: Thanx Max but i never make an external for Pd from c++. The example with ping-pong balls is what i am looking for.
Jaime, your external seems to be what i need, but i am a newbie in compiling stuff. When i enter : $ make i get : make: *** No rule to make target `.pd_linux', needed by `pd_linux'. Stop. How do i fix this error ? Thanx. ++ Jack Le vendredi 18 février 2011 à 15:42 +0100, Max a écrit : > http://cvlab.epfl.ch/research/body/surv/ > > GPL Licensed. > > > Am 18.02.2011 um 15:23 schrieb Jack: > > > I have also tested with gridflow (based on multiblob.pd) and there is > > the same problem (no possibility to follow a same blob). > > ++ > > > > Jack > > > > > > > > Le vendredi 18 février 2011 à 14:07 +0100, Jack a écrit : > >> Do you know if there is an external to track multiblob with a constant > >> ID (the ID doesn't change in the time when two or more blobs move). > >> For example, with [pix_multiblob], the ID of the blob is given by its > >> position relative to the lower left corner (or i'm wrong), so it is not > >> good for my application. > >> Thanx. > >> ++ > >> > >> Jack > >> > >> > >> _______________________________________________ > >> Pd-list@iem.at mailing list > >> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list > > > > _______________________________________________ > > Pd-list@iem.at mailing list > > UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list > _______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
-- Jaime E Oliver LR
www.jaimeoliver.pe
858 750 0924 (cel) 858 202 1522 (home)
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On 02/18/2011 02:07 PM, Jack wrote:
Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is not good for my application.
there is an abstraction that comes with Gem called [pix_blobtracker] that try to label the blobs (based on a least error algorithm) it uses iemmatrix, but apart from that, no extra externals are involved.
gfmadr IOhannes
Ah, good to know. I will give it a try. Thanx. ++
Jack
Le vendredi 18 février 2011 à 16:11 +0100, IOhannes zmölnig a écrit :
On 02/18/2011 02:07 PM, Jack wrote:
Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is not good for my application.
there is an abstraction that comes with Gem called [pix_blobtracker] that try to label the blobs (based on a least error algorithm) it uses iemmatrix, but apart from that, no extra externals are involved.
gfmadr IOhannes
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
I remember looking into pix_blobtracker but I don't remember why I didn't use it. In any case, I wrote a Pd abstraction last weekend which I called nearest-neighbor which I think might do the same thing: it looks for the shortest euclidean distances between blobs of the current frame with blobs of the last frame and reorders the blobs in the matrix accordingly. I made a test patch for tracking 8 blobs --- if pix_multiblob sees less than 8, the abstraction just copies the missing rows from the last frame --- a real kludge I know.
Definitely better ways to do this...and...this code is UGLY...but it is getting the job done for my application at least...
Attached is the abstraction with test patch (multiblob-test).
HTH,
-John
2011/2/18 Jack jack@rybn.org
Ah, good to know. I will give it a try. Thanx. ++
Jack
Le vendredi 18 février 2011 à 16:11 +0100, IOhannes zmölnig a écrit :
On 02/18/2011 02:07 PM, Jack wrote:
Do you know if there is an external to track multiblob with a constant ID (the ID doesn't change in the time when two or more blobs move). For example, with [pix_multiblob], the ID of the blob is given by its position relative to the lower left corner (or i'm wrong), so it is not good for my application.
there is an abstraction that comes with Gem called [pix_blobtracker] that try to label the blobs (based on a least error algorithm) it uses iemmatrix, but apart from that, no extra externals are involved.
gfmadr IOhannes
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list