Provided by: opendrop_3.3.1-3build1_amd64 bug

NAME

       opendrop - OpenDrop

RELEASE BUILDS

       Stand-alone  builds for Windows are provided for certain major releases and do not require
       the installation of additional software: https://github.com/jdber1/opendrop/releases/.

       Releases for Linux and macOS don't exist yet and OpenDrop should instead be installed as a
       Python package. See next section.

BUILDING PACKAGE FROM SOURCE

       OpenDrop requires Python 3.6 or higher, the GTK 3 library, OpenCV Python bindings, and the
       following build dependencies:

          · Boost.Math

          · SUNDIALS ARKODE

       Other required Python packages will be automatically installed by pip.

       Platform specific build instructions follow.

   Ubuntu
       1. Install OpenCV.

          · If on Ubuntu 17.10 (or later):

                sudo apt install python3-opencv

          · Alternatively there is an unofficial opencv-python  package  that  can  be  installed
            using pip:

                pip3 install opencv-python

       2. Install  SUNDIALS.  Unfortunately  libsundials-dev from the Ubuntu repositories are too
          old, we require at least version 4.0.0 and  above.  Here  are  brief  instructions  for
          installing SUNDIALS from source.

          1. Download  the  latest  version  from  the  releases  page. (Note: the latest version
             requires a CMake version newer than available in Ubuntu <  20.04.  If  this  affects
             you, try an older version of SUNDIALS like 4.0.0 instead.)

          2. Extract and change into the source directory, e.g.:

                tar -xvf sundials-5.7.0.tar.gz
                cd sundials-5.7.0/

          3. Create a build directory:

                mkdir build
                cd build/

          4. Configure,  build,  and  install  (make sure cmake and build-essential are installed
             from the Ubuntu repos):

                cmake \
                  -DEXAMPLES_INSTALL=OFF \
                  -DBUILD_ARKODE=ON \
                  -DBUILD_CVODE=OFF \
                  -DBUILD_CVODES=OFF \
                  -DBUILD_IDA=OFF \
                  -DBUILD_IDAS=OFF \
                  -DBUILD_KINSOL=OFF \
                  -DBUILD_STATIC_LIBS=OFF \
                  -DCMAKE_BUILD_TYPE=Release \
                  ..
                make
                sudo make install

       3. Install Boost.Math. If on Ubuntu 20.04 or newer, run:

             sudo apt install libboost-dev

          The libboost-dev package on older versions of Ubuntu is not  recent  enough  and  Boost
          will need to be installed from source. We need at least Boost 1.71.0.

       4. Follow the installation instructions here for installing PyGObject and GTK.

       5. Use pip to install OpenDrop from the repo:

             pip3 install git+https://github.com/jdber1/opendrop.git

          Run pip3 uninstall opendrop to uninstall.

       6. Run python3 -m opendrop to launch the app.

   macOS
       1. Install  the  latest  version  of  Python  3 and pip. You can do so using a third-party
          package manager like MacPorts or Homebrew.

       2.

          · Install the unofficial opencv-python package by running:

                pip install opencv-python

             (Make sure pip refers to your Python 3's pip installation.)

          · Alternatively, OpenCV and its python bindings can also be installed using the  opencv
            Homebrew formula or opencv MacPorts port.

       3.

          · If  Homebrew was used to install Python 3, PyGObject and GTK can also be installed by
            running:

                brew install pygobject3 gtk+3

          · or if MacPorts was used, run:

                sudo port install py36-gobject3 gtk3

             (Instead of the py36- prefix, use py37- or py38- if Python 3.7/3.8  is  the  version
             installed.)

       4. Install Boost.Math and SUNDIALS. (todo: Add MacPorts and Homebrew example).

       4. Use pip to install OpenDrop from the repo:

             pip install git+https://github.com/jdber1/opendrop.git

          Run pip uninstall opendrop to uninstall.

       5. Run python3 -m opendrop to launch the app.

   Windows
       Installing  OpenDrop as a Python package is possible on Windows using platforms like MSYS2
       or Anaconda.  The process is not very straightforward so your mileage  may  vary.   (todo:
       This page is out of date and should be updated.)

       When  OpenDrop  is  launched,  the  Main Menu window will first appear.  [image: Main Menu
       window] [image]

       Click on either of the 'Interfacial Tension' or 'Contact Angle' buttons  to  begin  a  new
       analysis of the respective type.

INTERFACIAL TENSION

       A  wizard-style  window  will  guide  you through the process of performing an interfacial
       tension analysis.

   Image acquisition
       First, choose an image input method. OpenDrop currently supports opening images  from  the
       local filesystem or capturing images with a USB camera.

   Local filesystem
       [image: IFT Image acquisition, local filesystem] [image]

       Click  on 'Choose files' to open the file chooser dialog and select an individual image or
       a sequence of images. When analysing a sequence of images, 'Frame interval' refers to  the
       time  interval  (in  seconds)  between  each  image.  Sequences  of  images are ordered in
       lexicographic order.

   USB camera
       [image: IFT Image acquisition, USB camera] [image]

       Click on  'Connect  camera'  to  open  the  camera  chooser  dialog.   [image:  IFT  Image
       acquisition, USB camera chooser dialog] [image]

       OpenDrop  uses  OpenCV to capture images from a connected camera. 'Camera index' refers to
       the device index argument passed to the OpenCV function cv2.VideoCapture(). An index of  0
       refers  to  the first connected camera (usually a laptop's in-built webcam if present), an
       index of 1 refers to the second camera, and so on. Currently, there does not appear to  be
       a way in OpenCV to query a list of valid device indices and associated device names, so in
       a multi-camera setup, some trial-and-error is required.

       'Frame interval' refers to the time interval (in seconds) between capturing images.

   Physical parameters
       [image: IFT Physical parameters] [image]

       'Inner density' refers to the density of the drop.

       'Outer density' refers to the density of the surrounding medium.

       'Needle diameter' refers to the diameter of the needle the drop is suspended from.

       'Gravity' refers to the gravitational acceleration.

   Image processing
       [image: IFT Image processing] [image]

       The image processing window requires you to define the 'drop region' and  'needle  region'
       of  the image. Click on the 'Drop region' or 'Needle region' buttons in the 'Tools' panel,
       then drag over the image preview to define  the  associated  region.   [image:  IFT  Image
       processing, regions defined] [image]

       Once  each  region  is  defined, a blue outline will be drawn over the preview showing the
       drop or needle profile that has been extracted.

       OpenDrop uses OpenCV's Canny edge detector to detect edges in  the  image,  click  on  the
       'Edge  detection' button in the 'Tools' panel to open a dialog bubble which will allow you
       to adjust the lower and upper threshold parameters of the Canny edge detector.  Thin  blue
       lines are drawn over the preview to show detected edges.

       The  extracted needle profile is used to determine the diameter in pixels of the needle in
       the image.  Along  with  the  needle  diameter  in  millimetres  given  in  the  'Physical
       parameters' page, a metres-per-pixel scale can be determined, which is then used to derive
       other physical properties of the drop after the image is analysed.

       Click on 'Start analysis' to begin analysing the input  images,  or  begin  capturing  and
       analysing images if using a camera.

   Results
       [image: IFT Results] [image]

       The  results  page  shows  the current status of the analysis. Data shown in the window is
       updated as the analysis progresses.

       There are two main views, the 'Individual Fit' view and the 'Graphs'  view.  The  'Graphs'
       view is not available when analysing a single image.

   Individual Fit
       The 'Individual Fit' view shows analysis details for an individual image. Pick an analysis
       in the lower panel to preview its details in the upper panel.

       The 'Drop profile' tab on the right of the upper  panel  shows  the  fitted  drop  profile
       (drawn  in magenta) over the extracted drop profile (drawn in blue).  [image: IFT Results,
       drop profile] [image]

       The 'Fit residuals' tab shows a plot of the fit residuals.  The  horizontal  axis  is  the
       'drop profile parameter', ranging from 0 to 1, with 0 corresponding to one end of the drop
       edge  outline,  and  1  corresponding  to  the  other  end.  The  vertical  axis  is  some
       dimensionless  quantity  indicating the deviation of the extracted profile from the fitted
       profile.  [image: IFT Results, fit residuals] [image]

       The 'Log' tab shows the history of any messages logged by the  fitting  routine.   [image:
       IFT Results, log] [image]

   Graphs
       [image: IFT Results, graphs] [image]

       The 'Graphs' view shows plots of interfacial tension, volume, and surface area over time.

   Cancel or discard analysis
       You  may  cancel  an in progress analysis by clicking on the 'Cancel' button in the footer
       (not shown in the screenshots above). To discard the results of a finished analysis, click
       the  'Back'  button,  which  will  return you to the 'Image processing' page, or close the
       window to return to the Main Menu.

   Saving
       [image: IFT Save dialog] [image]

       Once an analysis is finished, click on the 'Save' button in the footer to  open  the  save
       dialog.  All  data will be saved in a folder with name determined by the 'Name' entry, and
       in a parent directory determined by the 'Parent' selection.

       As a convenience, you may choose to save some pre-made plots.  [image:  IFT  Example  save
       output] [image]

       An  example  save output is shown above, and screenshots of the contents of some files are
       shown below.
         [image: IFT timeline.csv screenshot] [image] timeline.csv.UNINDENT
         [image: IFT profile_fit.csv screenshot] [image] water_in_air1/profile_fit.csv (each  row
         is an (x, y) coordinate pair).UNINDENT
         [image:          IFT          profile_extracted.csv          screenshot]         [image]
         water_in_air1/profile_extracted.csv (each row is an (x, y) coordinate pair).UNINDENT
         [image:        IFT         profile_fit_residuals.csv         screenshot]         [image]
         water_in_air1/profile_fit_residuals.csv  (first  column  is  'drop  profile  parameter',
         second column is residual).UNINDENT
         [image: IFT params.ini screenshot] [image] water_in_air1/params.ini.UNINDENT

CONTACT ANGLE

       A wizard-style window will guide you through the process of  performing  a  contact  angle
       analysis.

   Image acquisition
       The  contact  angle  image acquisition page is the same as the one for interfacial tension
       analyses.

   Image processing
       [image: Contact Angle Image processing] [image]

       The image processing window requires you to define the 'drop region' and 'surface line' of
       the image. Click on the 'Drop region' button in the 'Tools' panel then drag over the image
       preview to define the region. Similarly, click on the 'Surface line'  button  and  drag  a
       line  to  define  the  surface that the drop is sitting on. With the 'Surface line' button
       depressed and the preview widget focused, use the arrow keys for finer adjustments of  the
       surface line.  [image: Contact Angle Image processing, regions defined] [image]

       Once the drop region is defined, a blue outline will be drawn over the preview showing the
       drop profile that has been extracted.

       The intersection angle between the drop profile and the surface line will be  the  contact
       angle measured.

       In  a  contact angle analysis, OpenDrop uses image thresholding to separate the foreground
       from the background. Click on the 'Foreground detection' button to open  a  dialog  bubble
       which  will  allow you to adjust the threshold value. A blue overlay is painted over parts
       of the image deemed to be in the foreground.

       Click on 'Start analysis' to begin analysing the input  images,  or  begin  capturing  and
       analysing images if using a camera.

   Results
       [image: Contact Angle Results] [image]

       The results page for a contact angle analysis is quite simple.

       A  summary  table  is  shown on the bottom half with a results visualizer on the top half.
       Graphs of the left and right contact angles are also available if more than one  image  is
       analysed.

   Saving
       [image: Contact Angle Save dialog] [image]

       Once  an  analysis  is finished, click on the 'Save' button in the footer to open the save
       dialog. All data will be saved in a folder with name determined by the 'Name'  entry,  and
       in a parent directory determined by the 'Parent' selection.

       As  a  convenience,  you  may  choose  to save some pre-made plots.  [image: Contact Angle
       Example save output] [image]

       An example save output is shown above, and screenshots of the contents of some  files  are
       shown  below. (All coordinates are with respect to the origin being on the top-left corner
       of the image with increasing x and y in the right and down directions respectively.)
         [image: Contact Angle timeline.csv screenshot] [image] timeline.csv.UNINDENT
         [image:      Contact      Angle      profile_extracted.csv      screenshot]      [image]
         drop1/profile_extracted.csv (each row is an (x, y) coordinate pair).UNINDENT
         [image:   Contact   Angle   surface.csv   screenshot]   [image]  drop1/surface.csv  (The
         coefficients  of  the  surface  line;  first  column  is  gradient,  second  column   is
         y-intercept).UNINDENT
         [image:   Contact   Angle   tangents.csv  screenshot]  [image]  drop1/tangents.csv  (The
         coefficients of the tangent lines at the contact  point.  First  row  is  left  tangent,
         second   row   is   right   tangent.   First   column  is  gradient,  second  column  is
         y-intercept).UNINDENT

GENICAM INTEGRATION

       Install a GenTL producer, (e.g. see harvesters README).

       OpenDrop checks the environment variable  GENICAM_GENTL64_PATH  (specified  by  the  GenTL
       standard) for GenTL producers. To verify that a GenTL producer is installed correctly, you
       can run:

          $ echo $GENICAM_GENTL64_PATH
          /opt/mvIMPACT_Acquire/lib/x86_64

       (todo: Add details.)

NOTES

       User input validation is not yet implemented, invalid user input  may  cause  OpenDrop  to
       crash or print errors to the console.

       Stub.  [image]

       OpenDrop  is  a  fully-featured  image  analysis  software  for  performing  pendant  drop
       tensiometry and contact angle measurements. Images can be loaded from the file  system  or
       acquired  directly  from  USB  webcams  or  GenICam  (GigE Vision,  USB3 Vision) compliant
       industrial cameras.

       The software is released under the GNU GPL open source license, and available for free.

       For installation instructions, see "installation/index".

                                                  ----

       Git repo:
       https://github.com/jdber1/opendrop/

       Questions, issues, or feedback:
       https://github.com/jdber1/opendrop/issues

AUTHOR

       OpenDrop Contributors

COPYRIGHT

       OpenDrop Contributors

                                           Mar 16, 2022                               OPENDROP(1)