Provided by: opendrop_3.3.1-6build2_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".

                                                         ----

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

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

AUTHOR

       OpenDrop Contributors

COPYRIGHT

       OpenDrop Contributors

                                                  Apr 01, 2024                                       OPENDROP(1)