[ome-users] Matlab JPEG2000 comments

Mario Emmenlauer mario at emmenlauer.de
Sat Apr 25 09:53:52 BST 2015


Dear Melissa and all,

I'm coming back to a bit older thread here: reading JPEG2000 comments.
Your solution implemented in 2012 works very nicely for me! However
I've just found that in the code there is something that seems not
100% clean to me, and I have a small proposed fix. Here is the issue:
JPEG2000MetadataParser.java invokes parseContiguousCodestream() twice,
seemingly for the same position in the file. How that happens is beyond
my understanding, but it will lead to a duplication of all comments in
the internal list JPEG2000MetadataParser::ArrayList<String> comments.
When feeding this list later into addGlobalMeta(key, value), it becomes
unique, so the issue is never observed (and actually its not really an
issue). But I think its not 100% clean to construct the non-unique list
of comments in the first place, so I propose attached tiny fix. Its not
as good as avoiding the double-reading in the first place, but I was
unable to achieve that :-)

Let me know what you think?

All the best,

    Mario






On 13.09.2012 08:20, Mario Emmenlauer wrote:
> On 08/28/2012 08:39 AM, Mario Emmenlauer wrote:
>>
>> Dear Melissa,
>>
>> thanks a lot for the very very quick and helpful response!
>> I'll test the development build ASAP.
>>
>> Cheers,
>>
>>      Mario
>>
>>
>>
>> On 08/27/2012 04:55 PM, Melissa Linkert wrote:
>>> Hi Mario,
>>>
>>>> I'm trying to read comment fields from a lossless compressed JPEG200
>>>> file, created with Matlab (R2011b, in case it matters). Matlab supports
>>>> setting a list of arbitrary comments in the file, by specifying a cell
>>>> array of strings as a parameter to imwrite().
>>>> See http://www.mathworks.ch/help/techdoc/ref/imwrite.html#bsfqp3l-1.
>>>>
>>>> I'll send a corresponding image in a separate email. Is it possible
>>>> to read the comment fields with BioFormats?
>>>
>>> Thank you for mentioning this, and for sending a file privately.
>>>
>>> This commit allows the comments to be read and stored in Bio-Formats'
>>> original metadata hashtable:
>>>
>>> https://github.com/melissalinkert/bioformats/commit/eed5a864fb928511a84f9ec48376639b4431b49e
>>>
>>>
>>>
>>> A new development build with that fix should be available within a few
>>> days, otherwise the upcoming 4.4.3 version of Bio-Formats will include
>>> this fix.
>>>
>>> Regards,
>>> -Melissa
>>>
>>> On Mon, Aug 27, 2012 at 01:54:09PM +0200, Mario Emmenlauer wrote:
>>>>
>>>> Dear OME Developers,
>>>>
>>>> I'm trying to read comment fields from a lossless compressed JPEG200
>>>> file, created with Matlab (R2011b, in case it matters). Matlab supports
>>>> setting a list of arbitrary comments in the file, by specifying a cell
>>>> array of strings as a parameter to imwrite().
>>>> See http://www.mathworks.ch/help/techdoc/ref/imwrite.html#bsfqp3l-1.
>>>>
>>>> I'll send a corresponding image in a separate email. Is it possible
>>>> to read the comment fields with BioFormats?
>>>>
>>>> Thanks and all the best,
>>>>
>>>>     Mario
>>>>
>>>>
>>>>
>>>>
>>>> -- 
>>>> Mario Emmenlauer, Dipl.Inf.                  Office: +41-(0)61-26-72200
>>>> Biozentrum Basel
>>>> Klingelbergstrasse 50/70           mailto: mario.emmenlauer * unibas.ch
>>>> CH-4056 Basel                     http://infectx.org/about_us/emmenlau/
>>>>
>>>>
>>>> _______________________________________________
>>>> ome-users mailing list
>>>> ome-users at lists.openmicroscopy.org.uk
>>>> http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users
>>>
>> _______________________________________________
>> ome-users mailing list
>> ome-users at lists.openmicroscopy.org.uk
>> http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users
>>
> _______________________________________________
> ome-users mailing list
> ome-users at lists.openmicroscopy.org.uk
> http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users
> 

-- 
A: Yes.
> Q: Are you sure?
>> A: Because it reverses the logical flow of conversation.
>>> Q: Why is top posting annoying in email?

Mario Emmenlauer BioDataAnalysis             Mobil: +49-(0)151-68108489
Balanstrasse 43                    mailto: mario.emmenlauer * unibas.ch
D-81669 München                          http://www.biodataanalysis.de/
-------------- next part --------------
diff --git a/components/formats-bsd/src/loci/formats/in/JPEG2000MetadataParser.java b/components/formats-bsd/src/loci/formats/in/JPEG2000MetadataParser.java
index 232699b..8e17110 100644
--- a/components/formats-bsd/src/loci/formats/in/JPEG2000MetadataParser.java
+++ b/components/formats-bsd/src/loci/formats/in/JPEG2000MetadataParser.java
@@ -34,6 +34,8 @@ package loci.formats.in;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Set;
+import java.util.LinkedHashSet;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -362,6 +364,9 @@ public class JPEG2000MetadataParser {
       LOGGER.trace("Seeking to next segment marker at {}", nextPos);
       in.seek(nextPos);
     }
+    // remove duplicates from comments:
+    Set<String> commentset = new LinkedHashSet<String>(comments);
+    comments = new ArrayList(commentset);
   }
 
   /**


More information about the ome-users mailing list