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: EPICS areaDetector plugin & phoebus |
From: | "Pearson, Matthew via Tech-talk" <tech-talk at aps.anl.gov> |
To: | Mark Rivers <rivers at cars.uchicago.edu>, Jörn Dreyer <j.dreyer at hzdr.de> |
Cc: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Mon, 11 Apr 2022 15:07:28 +0000 |
(forgot to cc tech-talk) Hi, One possibility is to use an areaDetector plugin chain dedicated for the live display of images, separate from the plugin chain that is binning and saving images for the purposes of data analysis. That way you can
implement more binning and/or compression for the visualization. For example, a CSS widget to view the images might only be 1024 x 1024 or smaller, and so you can bin down to that same size, and in addition use compression or scale down to UInt8 data.
If you attempt to display an image in the intensity widget in CSS that is bigger than the size of the widget, then CSS will cut the image down to size by removing some of the columns and rows to make it fit. This
means you can lose fine detail in the image. A better approach, if you can’t increase the widget size, is to do the binning in the ROI plugin in areaDetector, which will preserve fine detail (although, it would be averaged out by the larger bins).
> If we would implement all the necesarry analysis code as plugins for areaDetector, what would be the maximum frame rate that can be
reliably displayed in e.g. phoebus? I don't know the answer for Phoebus. But I just tested with ADSimDetector on Windows. I configured it to generate 4096x4096 UInt16 images at 10 Hz. I displayed those locally in ImageJ
using the PVA plugin. It could only display about 2 frames/s. I then used the ROI plugin to bin 2x2, and configured NDPluginPva to get its data from the ROI plugin. The images being displayed were thus 2048x2048. ImageJ was able to display those at the
full 10 Hz. Unless you have a very large monitor you won't see any difference between 4Kx4K and 2Kx2K images in the display. You can do this same test with Phoebus using ADSimDetector. At those image sizes I think CSS/Phoebus would struggle to display at 10Hz. 2048x2048 UInt16 are 8.4MB images, so at 10Hz that’s 84MB/s, which is a lot for the purposes of visualization. > And is there a difference between CA and pva protocol? I have found that PVA puts significantly less CPU load on the areaDetector IOC than CA. I have also found that the ImageJ client is
somewhat faster with PVA than CA. If your data is compressible you can using NDPluginCodec to compress it. The ImageJ plugin can display compressed images. That can greatly reduce the network load. I’ve forgotten if CSS/Phoebus supports compressed PVA NTNDArray objects, but that would help a lot when visualizing large arrays. Cheers, Matt From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Jörn Dreyer via Tech-talk <tech-talk at aps.anl.gov>
Hi , |