danforthcenter / plantcv

Plant phenotyping with image analysis
Mozilla Public License 2.0
665 stars 265 forks source link

Kmeans function changes image size #1552

Closed k034b363 closed 2 weeks ago

k034b363 commented 5 months ago

Describe the bug Somewhere in the kmeans clustering pipeline, the image size is changing. We think this is a feature of the patch-based approach maybe change dimensions to be divisible by the specified patch size. The proposed fix is to add padding to the right and bottom of the image with some background average value to make sure the patch size is divisible by each dimension, and then slice back to the original dimensions when finished.

To Reproduce

  1. Starting with a set of images, train a model using plantcv.learn.train_kmeans making sure to specify a patch size that doesn't divide evenly into the image pixel dimensions
  2. Using a focal image, classify the pixels in the image using plantcv.predict_kmeans
  3. Check the shape of both the original focal image and the output from the prediction step. If the patch size doesn't divide evenly, the image will be smaller after prediction.

Expected behavior We expect the kmeans function not to change the image size. This is making some downstream checks using the overlay of cluster masks on the original image impossible.

Local environment (please complete the following information):

Additional context Add any other context about the problem here.

HaleySchuhl commented 1 month ago

Thank you to @jbraley1107 for your help reviewing the iterations of bugfixes. We are trying to adjust for the loss of detection along borders by adding some image padding prior to patch extraction in predict_kmeans .

HaleySchuhl commented 1 month ago

@all-contributors please add @jbraley1107 for review, userTesting

allcontributors[bot] commented 1 month ago

@HaleySchuhl

I've put up a pull request to add @jbraley1107! :tada: