Home Image-Pro Automation (Macros, Apps, Reports)
Options

Measuring fish larvae

We have been trying for the last week to get the Fibre App to measure fish larvae (image attached) but haven't had much success as yet. I wondered if anyone else has used this App for this purpose, or if Premier has another simpler way to do this?

When we run the App it only selects a few of the fish, and does not manage to trace along to the very tip of the fish's tail (which is quite indistinct)...and quite frequently treats 1 fish as though it was 2. We have tried using a mask first, but still no luck. It's obviously in the way we have set up the fibre parameters, but (to our knowledge) we have put in realistic pixel numbers.

Any pointers at all as to what we may be doing wrong would be most helpful!

Fiona

Best Answer

  • Options
    FMGFMG
    Answer ✓

    Thanks so much Yuri. I will give it another try tomorrow!

    Fiona

Answers

  • Options
    Hi Fiona,

    The image is not easy to measure and needs some pre-processing.
    I used the following macro to process the image and make it more contrast:

        Public Function ProcessFish() As SimpleScript
            ProcessFish = New SimpleScript
            Dim doc1, image1, doc2
    
            With Application.DocumentCommands.Active(ProcessFish)
                .Run(doc1)
            End With
    
            With Adjust.LookupTableCommands.BestFit(ProcessFish)
                .LUT = -1
                .Mode = Display.BestFit.BestFitMode.BestFit
                .ColorOption = Display.BestFit.ColorOptions.Extremes
                .ActiveFrameOnly = False
                .Run(doc1)
            End With
    
            With Adjust.ImageCommands.Convert(ProcessFish)
                .Destination = Image.ConvertTypes.Mono8
                .ConvertOption = Image.ConvertOptions.Custom
                .SourceRange = New RangeD(0R, 438R)
                .DestinationRange = New RangeD(0R, 255R)
                .Visible = True
                .Run(doc1, image1)
            End With
    
            With Application.DocumentCommands.Activate(ProcessFish)
                .Run(image1, doc2)
            End With
    
            With Process.Filter.LargeCommands.EdgePlusLarge(ProcessFish)
                .Passes = 1
                .Strength = 11
                .Width = 159
                .Height = 159
                .Run(image1, image1)
            End With
    
            With Process.Filter.LargeCommands.LowPassLarge(ProcessFish)
                .Passes = 2
                .Width = 5
                .Height = 5
                .Run(image1, image1)
            End With
    
        End Function
    

    and then I used Fiber Separation app to measure it.



    Not all fishes are properly separated, but it can be a starting point for manual editing.

    Regards,

    Yuri
Sign In or Register to comment.