{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n# Example 2\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from deadleaves import LeafGeometryGenerator, LeafAppearanceSampler, ImageRenderer\nfrom PIL import Image\nfrom torchvision.transforms.functional import pil_to_tensor\n\nreference_image = Image.open(\"../../examples/images/ulb_5136-2516.jpg\").resize(\n (731, 512), box=(0, 0, 3810, 2667)\n)\n\nimage_tensor = pil_to_tensor(pic=reference_image) / 255\n\nmodel = LeafGeometryGenerator(\n leaf_shape=\"circular\",\n shape_param_distributions={\n \"area\": {\"powerlaw\": {\"low\": 1000.0, \"high\": 5000.0, \"k\": 1.5}}\n },\n image_shape=(512, 731),\n)\nleaf_table, segmentation_map = model.generate_segmentation()\n\ncolor_params = {\n \"R\": {\n \"constant\": {\n \"value\": {\n \"from\": [\"x_pos\", \"y_pos\"],\n \"fn\": lambda x: image_tensor[\n 0, x[\"y_pos\"].astype(int), x[\"x_pos\"].astype(int)\n ],\n }\n }\n },\n \"G\": {\n \"constant\": {\n \"value\": {\n \"from\": [\"x_pos\", \"y_pos\"],\n \"fn\": lambda x: image_tensor[\n 1, x[\"y_pos\"].astype(int), x[\"x_pos\"].astype(int)\n ],\n }\n }\n },\n \"B\": {\n \"constant\": {\n \"value\": {\n \"from\": [\"x_pos\", \"y_pos\"],\n \"fn\": lambda x: image_tensor[\n 2, x[\"y_pos\"].astype(int), x[\"x_pos\"].astype(int)\n ],\n }\n }\n },\n}\n\ncolormodel = LeafAppearanceSampler(leaf_table=leaf_table)\ncolormodel.sample_color(color_param_distributions=color_params)\n\nrenderer = ImageRenderer(\n leaf_table=colormodel.leaf_table, segmentation_map=segmentation_map\n)\nrenderer.render_image()\nrenderer.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 0 }