Как можно рассчитать площадь листа в R, исходя из снимка, сделанного с учетом разрешения в пикселях, фокусного расстояния и высоты камеры?

Я ищу автоматический способ измерения площади листа по снимку, сделанному обычной камерой. Я хотел бы использовать камеру телефона, так как это облегчит работу. Я могу использовать ImageJ, но я верю, что может быть более быстрый способ сделать это.

До сих пор я знаю следующие особенности:

  • разрешение в пикселях ( 3042 x 4032)
  • Фокусное расстояние камеры (эквивалент 26 мм)
  • датчик камеры ( 7,01 мм х 5,79 мм)
  • высота камеры ( 25 см)

Я спрашиваю о R, потому что я работал над этим некоторое время, и я не буду менять программное обеспечение. Я попробовал некоторые пакеты, такие как EBIimage и magick, но я не зашел так далеко. Я могу загрузить картинку, но не могу рассчитать количество пикселей.

Кто-нибудь когда-нибудь пытался сделать что-то подобное в R?

Пожалуйста, комментарии и ответы будут очень благодарны.

Спасибо.

1 ответ

Если вы хотите измерить площадь листа, я рекомендую LeafByte. Это бесплатное приложение с открытым исходным кодом для iPhone и iPad. Он измеряет площадь листьев и уровни травоядности намного быстрее, чем ImageJ и соответствующее программное обеспечение, и его очень легко использовать. Он также автоматически сохраняет ваши данные в электронной таблице. Вы можете загрузить его в магазине приложений или узнать больше о LeafByte на сайте ниже. Вы также можете проверить страницу часто задаваемых вопросов, чтобы узнать о способах неразрушающего измерения листьев в полевых условиях.

https://zoegp.science/leafbyte

https://zoegp.science/leafbyte-faqs

Заявление об ограничении ответственности: я принимал участие в создании этого приложения, но поскольку оно бесплатное, я не зарабатываю на его использовании денег.

Используйте калибраторы.

  1. Возьмите три (или более) листа бумаги разной площади.
  2. Затем сфотографируйте листы на одинаковом расстоянии (25 см)*.
  3. Рассчитайте площадь пикселей каждого листа.
  4. Разделите метрическую площадь на площадь пикселей каждого листа. Давайте назовем этот номер к.
  5. Рассчитайте среднее значение k.
  6. Рассчитайте метрическую площадь листа, используя эту формулу: metric_area = k * pixel_area.

* Вы также можете использовать калибраторы для разных расстояний от листа. Это немного сложнее, но, вероятно, более точно, чем расчет.

Имейте в виду, что объектив с фокусным расстоянием 26 мм будет иметь некоторые искажения по краям изображения. Было бы лучше, если бы вы использовали объектив 50 мм или более. В противном случае всегда центрируйте лист на изображении и оставляйте некоторое пространство вокруг листа.

Вот как бы я это сделал. Я бы использовал Python и https://scikit-image.org/ вместо R, я считаю, что это проще и лучше документировано для анализа изображений.

Другие вопросы по тегам