1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 <2024> 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 <2024> 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: ImageJ AD Plugins and PVXS |
From: | Joshua Einstein-Curtis via Tech-talk <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Mon, 3 Jun 2024 09:27:32 -0500 |
Thanks all -- much clarification.For reference and archiving answers on the chain, here is a link to the NTNDArray "dimensions" section that doesn't say anything about dimension ordering, and is the proper link: https://docs.epics-controls.org/en/latest/pv-access/Normative-Types-Specification.html#dimensions.I'd say this should probably be clarified in the next documentation workshop somewhere as convention, as ordering in matrix-handling libraries seems to be non-existent. I'm including OpenCV and PIL in this with their different RGB and BGR defaults. We're using Eigen for some manipulations, which supports both row- and column-major data storage, but defaults to column-major. Having it based on codec definitely makes sense for images, though.Appreciate the quick replies,Josh ECOn Fri, May 31, 2024 at 10:21 PM Mark Rivers <rivers at cars.uchicago.edu> wrote:Hi Josh,
The text you quote is from the description of an NTMatrix. That is not the normative type used by the areaDetector NDPluginPva plugin or the ImageJ viewer. They use the NTNDArray normative type, which can have any number of dimensions. AD uses the normal convention for image data which has the first dimension being the number of columns and the second being the number of rows, e.g. a 1920x1200 monitor is [columns, rows].
Mark
Sent from my iPhone
On May 31, 2024, at 4:36 PM, Joshua Einstein-Curtis via Tech-talk <tech-talk at aps.anl.gov> wrote:
Hi all,
We're doing some work using PVXS and debugging using the ImageJ AD plugins, and I'm finding something that just doesn't make sense to me. Here's the run down:
For each pvxs::Value, we have two dimensions, as these are array values. Based on the specification in the documentation (https://docs.epics-controls.org/en/latest/pv-access/Normative-Types-Specification.html) I see:
" A dim] of 2 elements describes a matrix, where the first element of dim gives the number of rows, and the second element of dim gives the number columns."
When I set my array up and then send the image to the ImageJ NTNDA_Viewer plugin, I find that dims[0] is the x-axis, while dims[1] is the y-axis, which is the opposite of what I'd expect given the normative type specification.
Just curious if anyone else has run into this, or if I'm missing something obvious.
Josh EC
RadiaSoft