Smoothing option for manually tracked landmarks

Issue #119 wontfix
Daniel created an issue

When landmarks without tantalum beads are tracked manually I try to aim for the same place on an anatomic feature. Blurred images and the interpretation of the three-dimensional orientation of the landmarks impair a smooth (biological) trend in the plot. Smoothing the spatially alternating landmark centers could result in a trend which makes more sense from a biological viewpoint. Adding this feature to XMALab would allow easy rechecking to see if the marker points still fit spatially on the landmarks.

Comments (6)

  1. Benjamin Knorlein

    Hi Daniel, We just had recently a discussion in the group if we should integrate image processing, e.g. sharpening, blurring etc, into xmalab but we decided not to as it will slow down the program significantly. So it is better to actually preprocess the images in other tools (e.g. ImageJ or Photoshop) before loading them in XMALab so that it only has to be done once. I am therefore closing the issue. In case I misunderstood the issue please let me know. Ben

  2. Daniel reporter

    I think my wording resulted in a misunderstanding. I did not mean to talk about image processing but plot reprocessing. Let me rephrase my inquiry: Markerless tracking often results in scattered plots even if the actual movement is perfectly smooth. Graph smoothing by different algorithms and magnitudes could reduce this effect significantly. The graph smoothing should involve an option to override the scattered data with the smoothed data. (or even keeping both?) After exporting, the smoothed 3D data could be used to calculate the required parameters easier. As seen in this example: http://i.stack.imgur.com/0sdj2.png -Daniel

  3. Benjamin Knorlein

    Oh. Now i understand. However, we on purpose left the smoothing of 3D points out of the graph as it is better to smooth the final motion of the rigid bodies, which is visible in the graph. During tracking users should not try to "optimize" based on the feedback they have in the plotwindows (except the reprojection errors) but rather should try to track points as accurate as possible based on the image. In addition rigid body movement should not use filtered input data, but the data which is present, followed by a filtering at the end. Also some of the new processing optimizes the reprojection of the rigid bodies onto their tracked 2D position, so filtering the 3D points will have no effect on the pose of the body anyways. Nonetheless, I will bring the issue up in the next meeting and I will check if other users would be interested in a feature like this.

    PS: And there is the option to export filtered 3D points which you can visualize in an external program, e.g. Matlab

  4. Daniel reporter

    Hello Benjamin, I am deeply sorry as I always forget to explain my workflow first. To make myself clearer and explain why this feature would be helpful I will try to outline my workflow. I am planning to use XMALab for 3D analysis of X-ray recordings of small animals which were recorded underwater. No XROMM analysis will be done after these XMALab processes. I simply want to export the 3D data and calculate several motion parameters from a 3D stick model. As the animals are very small the pixel area in which they can be seen and analyzed in the resulting records is also limited. The resulting low resolution in combination with an amplified flicker effect due to the underwater recording is making analysis rather complicated. In addition to this, the most relevant structures of these animals were not marked with any metal markers. Thus, I have to manually identify landmarks from x-ray shadows only, by knowing and perceiving the underlying anatomical structures and their 3D orientation. The flickering that I mentioned earlier in combination with the low resolution would generate a scattered motion plot (as seen here: http://imgur.com/a/1AGTG). I figured that manual tracking of every other frame (as seen here: http://imgur.com/a/lBGJ7) produces better results. The interpolation allows me to generate a straight plot from these infrequent data points. But some landmarks are very hard to identify and therefore even this method does not provide reasonable results (as seen here: http://imgur.com/a/RJOy1). If I could smooth areas of the manually tracked points this would hopefully result in a straight plot. This smoothing would only be useful when it is done in the program that is used to track the landmarks as I need to visually recheck the resulting positioning frame by frame. I hope I made myself clear this time and that you consider adding this feature as it would also help other members of the department I work in.

  5. Benjamin Knorlein

    Hi Daniel, Thanks for the detailed explanation. The option to filter points has already been discussed several times (see issues #9 and #28) and at that point we decided to not integrate the feature due to several problems. I will send the issue to Beth and let her decide as she is the PI. Also, did you check if interpolation is a feature you could use for your problems.

    However, even if in your case it seems straightforward it will have quite some impact on other functionality, * Filtering points has to be done the same way as for filtering rigid bodies. This will require option and other implementations for the mainwindow, plotwindow, filter-override, saving etc. In addition it is not clear if the points are only filtered by themselves or if the filtered data should also be used for rigid body computations. As with newer processing the RB can optimized based on the 2D positions this might make things even more complex and harder to have clearly reproducible results. Taking all into account I would assume it might consume 2 days implementation. * The filtering will take some time to compute so either it would have to be updated by clicking a button or a shortcut which might not always be comfortable or it has to be performed whenever data changes, which will slow down the processing a lot. * The data will only be filtered if it is continuous and stops whenever a frame is missing, so in your case it might not always help

  6. Log in to comment