Contents — find the section you need

Change parameters and verify

Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.

Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.

The experiment controls are in English.

Open experiment panel in a new tab

Download reproduction source

Coba eksperimen area terproyeksi di peramban Anda

Panel di atas menjalankan eksperimen citra sintetis tanpa memerlukan instalasi Python. Pilih skena clean, green-tag, dim, atau clipped; ubah kecerahan minimum V, region of interest, dan mm/piksel. Sembilan preset mencakup ketujuh kondisi yang dipublikasikan, satu ROI yang terlalu kecil, dan satu seleksi kosong. Preset mengatur ulang setiap input; mengubah ambang secara manual juga mengubah kasus dim yang dipulihkan.

Periksa input, referensi dalam-bingkai, mask yang diekstraksi, dan overlay kesalahan. Merah menandai false positive dan biru menandai false negative. Batas cokelat menandai ROI yang dipilih pada input. Simpan hasil sebagai A dan ubah satu input untuk membandingkan citra dan metrik pada skala tampilan yang sama. Tabel data memberikan rangkaian piksel horizontal (x/y berbasis nol dan panjang); rangkaian tersebut merekonstruksi setiap wilayah citra secara eksak, tanpa downsampling. Bagikan kondisi atau unduh JSON hasil untuk menyimpan eksperimen.

Citra tetap berupa skena geometris asli 320×240, tanpa unggahan foto nyata atau input kamera. Fungsi geometri dan pengukuran NumPy asli digunakan kembali tanpa perubahan. Peramban menggantikan hanya konversi/seleksi rentang OpenCV dengan lookup terverifikasi atas tiga warna RGB tetapnya: latar belakang (235,235,235), target (50,160,65), dan target dim (20,60,25). Nilai HSV uint8 OpenCV 4.6.0 mereka adalah (0,0,235), (64,175,160), dan (64,170,60). Ini bukan konverter HSV serbaguna. H 35–85 dan S 80–255 tetap tidak berubah; V minimum dapat diatur dari 0 hingga 255, inklusif. Tidak ada morfologi yang diterapkan.

ROI pengecualian-tag tetap adalah (50,20,230,190); ROI kecil adalah (140,60,20,30), dalam piksel x/y/lebar/tinggi. Tak satu pun beradaptasi terhadap tanaman. Skala berkisar dari 0,1 hingga 1,0 mm/piksel sebagai konversi bidang-referensi yang diasumsikan, bukan kalibrasi. Citra tetap sama saat skala berubah. touches_frame muncul sebagai 1 untuk ya dan 0 untuk tidak; seleksi kosong memiliki presisi yang tidak terdefinisi (—). IoU sempurna untuk skena clipped tetap tidak mengatakan apa-apa tentang bagian di luar citra. Keluaran ini tidak mengukur biomassa, pertumbuhan, stres, atau area permukaan daun nyata.

Unduhan asli dan baseline tersimpan tetap tidak berubah. Instruksi reproduksi lokal di bawah bersifat opsional. Adapter peramban menggunakan NumPy tanpa OpenCV; simpan entrypoint, kernel, dan palet-nya bersama untuk menjalankannya secara lokal dengan NumPy terinstal.

leaf: experiment.py

leaf: leaf_kernel.py

leaf: palette.json

leaf: original.py

Penginderaan dan aliran CEA — di mana mengukur CO₂ dan larutan nutrisi

Tampilan yang sama dapat merujuk ke tempat dan waktu yang berbeda

DO reservoir berbeda dari DO pada outlet saluran tanam. Sebelum mengaitkan perbedaan tersebut dengan konsumsi oksigen akar, periksa apakah sensor mengamati waktu yang sebanding, apakah kalibrasinya konsisten, dan apakah sampel berubah selama transit.

Panduan zona akar memisahkan EC, pH, DO, dan keseimbangan air. Artikel ini menanyakan di mana dan bagaimana membandingkannya. Artikel ini menggunakan kembali konsep lag dan kalibrasi dari panduan sensor suhu/kelembaban, menambahkan masalah khusus untuk CO₂, larutan nutrisi, dan aliran.

Tabel penempatan dan prosedur investigasi di bawah adalah pendekatan desain yang kami usulkan. Ini bukan pengukuran fasilitas, jumlah sensor yang diwajibkan, atau ambang alarm tanaman universal.

Tentukan perbedaan mana yang perlu Anda amati

Target Contoh titik perbandingan Catatan pendamping
CO₂ zona tanam Dekat kanopi, udara pasokan, udara buang atau balik Ketinggian, dosis, ventilasi, pintu, suhu, dan RH
EC, pH, dan suhu air Reservoir campuran, inlet dan outlet saluran tanam Air sumber, penambahan, volume, dan sirkulasi
DO Reservoir, dekat akar, outlet saluran Suhu, aerasi, dan teknologi sensor
Aliran cairan Makeup, cabang yang dipilih, pembuangan Aliran, lokasi, dan state katup
Level dan tekanan Reservoir, hulu/hilir filter Hubungan level-ke-volume, referensi tekanan, dan elevasi
Pergerakan udara Depan/belakang rak dan ketinggian berbeda Orientasi probe, durasi rata-rata, dan state kipas

Gunakan titik permanen untuk pemantauan dan pengukuran portabel untuk pemetaan. Pertahankan referensi tetap untuk membedakan variasi waktu selama survei bergerak. Tetapkan ID lokasi secara independen dari ID sensor sehingga penggantian tidak merusak riwayat lokasi.

Apakah self-kalibrasi CO₂ sesuai dengan kondisi tanam?

Pengukuran tepat di samping outlet CO₂ tidak boleh secara otomatis mewakili seluruh kanopi. Catat hubungan dengan injeksi, udara pasokan/buang, dan napas manusia. Titik yang mendiagnosis peralatan dosis melayani tujuan berbeda dari titik yang menilai kondisi tanaman.

Periksa algoritma kalibrasi. Catatan kalibrasi lapangan Sensirion SCD30 2018 menjelaskan ASC menggunakan konsentrasi minimum yang sesuai dengan 400 ppm dan memerlukan pemaparan rutin terhadap konsentrasi tersebut.

Inferensi kami adalah bahwa ruangan yang diperkaya secara terus-menerus mungkin tidak memenuhi asumsi ini. Ini menyangkut algoritma yang terdokumentasi, bukan setiap sensor CO₂. Ikuti instruksi model dan firmware yang dipilih dan rencanakan perbandingan dengan gas referensi atau instrumen terkalibrasi. Asumsi historis 400 ppm bukan nilai kalibrasi luar ruangan masa kini yang terjamin.

Keluaran suhu/RH bawaan pada perangkat CO₂ mungkin menjelaskan enklosurnya sendiri, bukan udara kanopi yang representatif. Bedakan input kompensasi lingkungan dari pengukuran yang digunakan untuk mengevaluasi lingkungan tanaman.

EC, pH, dan DO memerlukan pemeriksaan yang berbeda

Manual instrumen multiparameter USGS menghubungkan penyimpanan, pemeliharaan, kalibrasi, pengukuran, dan pelaporan. Cakupan air alaminya tidak menetapkan setpoint tanaman atau kesesuaian untuk larutan nutrisi tertentu.

Daftar periksa usulan berikut menerapkan pendekatan umum tersebut; prosedur dan larutan sebenarnya harus sesuai dengan dokumentasi instrumen.

Parameter Hal yang perlu diverifikasi
EC Standar konduktivitas dan suhu, rentang yang diharapkan, konstanta sel, dan kompensasi suhu
pH Buffer yang sesuai untuk rentangnya, suhu, kondisi elektrode/junction, dan penyimpanan
DO Metode optik atau elektrokimia, kondisi kalibrasi, kompensasi tekanan/salinitas, kondisi membran atau cap
Semua Kesalahan sebelum penyesuaian, hasil setelah pembersihan/penyesuaian, identitas standar, tanggal, dan waktu stabilisasi

Kesesuaian pada standar tidak menetapkan pembacaan yang representatif setelah pemasangan. Selidiki gelembung, endapan, cairan diam, dan perbedaan konsentrasi lokal segera setelah penambahan.

Teknologi DO penting. Panduan pengukuran YSI menjelaskan bahwa sensor optik tidak mengonsumsi oksigen dan tidak memiliki persyaratan pengadukan pada prinsip pengukurannya, meskipun aliran dapat meningkatkan waktu respons. Jangan mengasumsikan persyaratan aliran yang identik untuk perangkat elektrokimia dan optik. Bahkan sensor optik tetap memerlukan sampel cairan yang representatif dari lingkungan akar yang dimaksud.

Jalur sampel membawa cairan yang lebih lama ke sensor

Sel aliran jarak jauh memisahkan waktu tampilan dari kondisi di titik sampling. Untuk volume jalur sintetis 0,50 L dan aliran konstan 0,25 L/menit, asumsikan perpindahan ideal tanpa pencampuran atau dispersi:

t_{transport}=V_{line}/Q=0.50/0.25=2.0\ \mathrm{min}
Diagram 1 · Use the button to switch views
Urutan konseptual yang memisahkan transportasi sampel, respons sensor, dan penerimaan log, dengan waktu transportasi dua menit sintetis.

Dua menit tersebut hanya menjelaskan transportasi jalur ideal. Pencampuran sel, respons sensor, dan penundaan komunikasi adalah efek tambahan.

Melipatgandakan aliran menjadi 0,50 L/menit mengurangi waktu ideal ini menjadi satu menit. Jalur dan sel nyata bercampur; suhu dan pertukaran gas juga dapat mengubah sampel. Menggeser stempel waktu sebesar dua menit tidak selalu merekonstruksi kondisi asli.

Catat lokasi sampling, konfigurasi jalur/sel, aliran, waktu pengukuran instrumen, dan waktu penerimaan secara terpisah. Saat berpindah antar titik sampling, periksa juga carryover dari sampel sebelumnya.

Bandingkan perintah pompa, aliran, level, dan tekanan

Pompa ON bukan pengukuran aliran. Pengiriman total dan pengiriman ke setiap cabang adalah pengamatan yang berbeda. Ikuti persyaratan flowmeter yang dipilih untuk jalur lurus, pipa penuh, rentang, dan gelembung.

Konversikan level menjadi volume menggunakan geometri reservoir. Untuk penampang konstan, perubahan volume sama dengan luas dikali perubahan level; konversi tersebut tidak universal untuk bejana dengan dasar miring. Penginderaan level berbasis tekanan juga memerlukan pertimbangan densitas dan referensi tekanan.

Tekanan diferensial filter dapat mendukung perbandingan, tetapi juga bergantung pada aliran. Kenaikan saja tidak membuktikan penyumbatan ketika kondisi operasi berbeda. Catat elevasi pengukuran, tekanan gauge versus absolut, dan satuan.

Gunakan residual keseimbangan air untuk menemukan inkonsistensi

Di sini batasannya adalah reservoir saja. Q_{in} mencakup setiap aliran masuk dan Q_{out} setiap aliran keluar, termasuk pasokan dan balik sirkulasi. Ini berbeda dari batasan seluruh-sistem pada artikel sebelumnya. Contoh sintetis menetapkan suku lain, seperti evaporasi, menjadi nol.

r=(V_1-V_0)-\sum_i(Q_{in,i}-Q_{out,i})\Delta t_i

Menggunakan L/menit dan menit memberikan residual r dalam L. Dalam contoh asli kami, aliran masuk 1,0 L/menit dan aliran keluar 0,2 L/menit selama lima menit. Kenaikan yang diprediksi adalah 4 L, sementara volume yang disimpulkan dari level hanya naik dari 100 L menjadi 101 L. Residualnya adalah −3 L.

Ini mendorong investigasi aliran yang tidak tercatat, bias aliran/level, perbedaan waktu, atau kehilangan yang terlewat. Ini bukan bukti kebocoran.

from math import isfinite


def transport_minutes(line_l, flow_l_min):
    if not all(isfinite(x) for x in (line_l, flow_l_min)):
        raise ValueError("finite values required")
    if line_l < 0 or flow_l_min <= 0:
        raise ValueError("nonnegative volume and positive flow required")
    return line_l / flow_l_min


def residual_l(v0, v1, intervals):
    if not all(isfinite(v) and v >= 0 for v in (v0, v1)):
        raise ValueError("invalid tank volume")
    if not intervals:
        raise ValueError("intervals required")
    predicted = 0.0
    for minutes, inflow, outflow in intervals:
        if not all(isfinite(x) for x in (minutes, inflow, outflow)):
            raise ValueError("finite interval values required")
        if minutes <= 0 or min(inflow, outflow) < 0:
            raise ValueError("invalid interval")
        predicted += (inflow - outflow) * minutes
    return (v1 - v0) - predicted


print(f"transport: {transport_minutes(0.50, 0.25):.1f} min")
print(f"residual: {residual_l(100, 101, [(5, 1.0, 0.2)]):.1f} L")

Simpan sebagai measurement_check.py dan jalankan python3 measurement_check.py untuk memperoleh 2.0 min dan -3.0 L. Aliran konstan dalam setiap interval, dan interval diasumsikan mencakup seluruh periode pengamatan tanpa celah atau tumpang tindih. Contoh kecil ini tidak menerima stempel waktu, sehingga tidak dapat memverifikasi asumsi tersebut secara otomatis.

Ubah volume akhir menjadi 104 L dan residualnya menjadi nol. Membagi lima menit menjadi dua dan tiga menit pada aliran yang sama membuat hasilnya tidak berubah. Untuk data terukur, batalkan integral yang tidak lengkap alih-alih memperlakukan aliran yang hilang sebagai nol.

Misalkan setiap volume titik akhir memiliki batas kesalahan 0,5 L, setiap aliran memiliki batas kesalahan 0,1 L/menit, dan durasi eksak. Kontribusi terburuk terhadap kesalahan residual selama lima menit adalah 0.5+0.5+5(0.1+0.1)=2.0 L. Asumsi-asumsi tersebut saja tidak dapat menjelaskan diskrepansi 3 L. Ini adalah batas ilustratif, bukan akurasi produk atau interval kepercayaan statistik. Validasi batas dan suku yang terlewat sebelum mendiagnosis kesalahan.

Pisahkan sirkulasi dari ventilasi

Sirkulasi menggerakkan dan mencampur udara dalam ruangan; ventilasi menukar udara dengan luar ruangan. Panduan rumah kaca NC State memperlakukan keduanya secara terpisah. Jangan memasukkan aliran terukur kipas sirkulasi ke dalam keseimbangan CO₂ sebagai pertukaran luar ruangan.

Untuk survei kecepatan udara kanopi, catat orientasi probe, lokasi, durasi rata-rata, pencahayaan, dan state kipas. Aliran di depan rak tidak menetapkan aliran di belakangnya. Pertahankan perbedaan spasial dan fluktuasi selain rata-rata, dan ulangi survei ketika pertumbuhan tanaman mengubah jalur aliran. Satu kecepatan udara saja tidak secara langsung memprediksi transpirasi atau penyakit.

Commissioning rantai pengukuran

  1. Definisikan tujuan pengamatan dan batasannya; selaraskan ID lokasi, satuan, dan waktu.
  2. Bandingkan terhadap standar atau instrumen referensi dan pertahankan hasil sebelum/sesudah penyesuaian.
  3. Selidiki perbedaan instrumen melalui pengukuran ko-lokasi, terpisah dari survei spasial.
  4. Bandingkan log operasi dengan pengamatan, bedakan penundaan transportasi, respons, dan komunikasi.
  5. Gunakan keseimbangan air dan pengukuran berganda untuk menemukan inkonsistensi, lalu selidiki penyebab yang bersaing.

Ini menetapkan pengamatan untuk kontrol dan estimasi selanjutnya. Estimasi citra tanaman memerlukan disiplin yang sama: pertahankan waktu citra, pencahayaan, dan sudut pandang sebelum menafsirkan perubahan yang tampak sebagai pertumbuhan.

Citra tanaman CEA — mengukur area terproyeksi, membedakan area daun

Apakah lebih banyak hijau dalam foto berarti lebih banyak daun?

Tanaman yang sama dapat menempati wilayah tampak yang berbeda ketika orientasi daun, tumpang tindih, pencahayaan, atau posisi kamera berubah. Tugas estimasi pertama kami karena itu dibatasi pada area terproyeksi dari wilayah yang dipilih dalam citra. Ini tidak secara langsung mengestimasi area permukaan daun, massa, hasil, atau stres.

Panduan penginderaan sebelumnya memisahkan perbedaan spasial, instrumen, dan waktu. Citra juga memerlukan catatan akuisisi dan pemrosesan. Di sini, elips yang tumpang tindih membentuk input sintetis; tidak ada foto tanaman terukur atau model terlatih. Contoh terkendali mengungkap penyebab kegagalan sebelum merancang evaluasi pada tanaman nyata.

Definisikan besaran terlebih dahulu

Untuk mask biner M(u,v) dengan piksel target sama dengan satu, jumlah piksel adalah N=\sum_{u,v}M(u,v). Diberikan skala isotropik yang diasumsikan s [mm/piksel], area ekuivalen bidang-referensi adalah:

A_{proj}=Ns^2

Baseline sintetis kami berisi 14.738 piksel. Pada 0,5 mm/piksel, ini menjadi 3.684,50 mm². Skala tersebut disediakan untuk ilustrasi, bukan diukur secara otomatis.

Besaran Apa yang diukur halaman ini Apa yang bukan
Jumlah piksel mask Jumlah piksel yang dipilih Area geometris yang dilingkupi kontur
Area terproyeksi bidang-referensi Jumlah piksel dikali skala kuadrat Area permukaan aktual daun yang melengkung
Gabungan yang tampak Wilayah target yang tampak dari atas Jumlah area setiap daun yang tumpang tindih
Wilayah hijau Kandidat yang dipilih berdasarkan warna Identifikasi semantik daun yang terjamin

Analisis ukuran PlantCV serupa menghitung properti dari wilayah berlabel dan mendukung konversi melalui dimensi piksel. Jaga agar ekstraksi wilayah tetap terpisah dari konversi satuan. Kode kami menghitung piksel secara langsung dan tidak memanggil PlantCV.

Jaga agar akuisisi dan skala konsisten

Catat posisi dan orientasi kamera, panjang fokal, dimensi citra, eksposur, white balance, pencahayaan, ID tanaman, dan stempel waktu. Jika eksposur atau white balance otomatis, catat state tersebut. Ambang tetap yang diterapkan pada kondisi citra yang berubah dapat mengubah perubahan warna menjadi perubahan area yang tampak.

Panjang 100 mm yang diketahui membentang 200 piksel memberikan 0,5 mm/piksel di lokasi tersebut. Tempatkan referensi pada bidang pengukuran dan sejajarkan kamera sedekat mungkin dengan tegak lurus. Jika distorsi atau perspektif penting, gunakan kalibrasi kamera dan koreksi planar yang sesuai. Skala horizontal dan vertikal yang berbeda memerlukan Ns_xs_y.

Referensi di lantai tidak harus berbagi skala dengan daun yang tumbuh di atasnya. Koreksi planar tidak membuat kanopi tiga dimensi menjadi koplanar. Ketika asumsi ini tidak berlaku, laporkan jumlah piksel di bawah akuisisi tetap atau area ekuivalen bidang-referensi, bukan mengklaim area daun fisik.

Menggunakan 0,6 alih-alih 0,5 mm/piksel mengalikan area mask yang sama dengan 1,44: peningkatan 44%. Ekstraksi yang benar dapat hidup berdampingan dengan konversi satuan yang salah.

Pilih kandidat warna

Tutorial OpenCV mendemonstrasikan konversi ke HSV dan seleksi rentang warna dengan inRange. Memilih hijau tidak sama dengan mengenali daun.

Input berukuran 320×240 piksel. Dalam representasi HSV 8-bit OpenCV, contoh ini memilih H 35–85, S 80–255, dan V 100–255. H tidak dimasukkan langsung sebagai sudut dari 0–360. Array yang kami hasilkan adalah RGB, sehingga konversi menggunakan COLOR_RGB2HSV; jangan menggunakan kembali konversi tersebut secara membabi buta pada citra BGR yang dikembalikan oleh imread.

Intinya adalah tiga baris. Pembangkitan citra, perbandingan kondisi, dan verifikasi ada dalam unduhan lengkap.

hsv = cv2.cvtColor(rgb, cv2.COLOR_RGB2HSV)
mask = cv2.inRange(hsv, (35, 80, min_v), (85, 255, 255)) != 0
pixels = int(np.count_nonzero(mask))

Tidak ada pengisian morfologis atau penghapusan komponen kecil yang diterapkan. Jika menambahkan pemrosesan semacam itu, periksa apakah itu mengubah daun sempit atau celah antar daun terhadap mask referensi.

Bandingkan kegagalan dengan geometri yang sama

Referensi yang dihasilkan adalah gabungan yang tampak dalam-bingkai dari tiga elips. Tumpang tindih dihitung sekali, dan bagian di luar bingkai dikecualikan.

Baseline sintetis, tag latar belakang hijau, dan sisi kiri yang diredupkan, dengan false positive ditandai merah dan false negative biru.

Merah menandai latar belakang yang dipilih sebagai target; biru menandai piksel target yang terlewat. Wilayah hijau mempertahankan warna inputnya. Ini adalah bentuk sintetis, bukan foto tanaman.

Kondisi Piksel terpilih Area ekuivalen bidang [mm²] IoU Interpretasi
clean 14,738 3,684.50 1.000 Cocok dengan referensi sintetis
green_tag 15,538 3,884.50 0.949 Menambahkan 800 piksel latar belakang
green_tag_roi 14,738 3,684.50 1.000 Mengecualikan tag pada tata letak ini
dim 7,428 1,857.00 0.504 Melewatkan hampir setengah tanpa mengubah bentuk
dim_lower_v 14,738 3,684.50 1.000 V minimum 40 memulihkan wilayah gelap ini
wrong_scale 14,738 5,305.68 1.000 Mask benar, konversi 44% lebih besar
clipped 13,016 3,254.00 1.000 Cocok dengan referensi dalam-bingkai, tetapi bukan seluruh objek

green_tag_roi tetap dimulai pada (50,20), dengan lebar 230 dan tinggi 190 piksel. Ini dipilih untuk menghindari tag sintetis ini, bukan sebagai region of interest yang tidak bergantung pada tanaman. Pertumbuhan melebihi ROI akan mengecualikan piksel target yang sebenarnya.

Menurunkan V minimum bukan perbaikan universal. Ini memulihkan target dim di sini, tetapi dapat menerima latar belakang hijau gelap dalam skena nyata. Jangan menyetel ambang terhadap jawaban untuk setiap citra dan melaporkan akurasi hanya pada citra yang sama tersebut.

Evaluasi area dan lokasi secara terpisah

Untuk prediksi P dan referensi G, intersection over union mengukur tumpang tindih spasial:

IoU=\frac{|P\cap G|}{|P\cup G|}

Jumlah piksel berlebih dan terlewat yang sama menghasilkan kesalahan area nol meskipun lokasi salah. Referensi [0,1,1,0] dan prediksi [1,1,0,0] masing-masing berisi dua piksel terpilih, tetapi IoU-nya adalah 1/3.

Keluaran juga mencakup presisi, fraksi piksel terpilih yang benar, dan recall, fraksi piksel referensi yang dipulihkan. mask_area_error_percent adalah kesalahan jumlah-piksel terhadap referensi, bukan kesalahan fisik dari kalibrasi skala. Ini tetap nol untuk wrong_scale. Rasio yang tidak terdefinisi, termasuk IoU dari dua mask kosong, adalah JSON null, bukan skor sempurna yang diasumsikan.

touches_frame menandai piksel terpilih yang menyentuh tepi citra. Ini bernilai true untuk clipped. Ini tidak mendeteksi setiap objek yang tidak lengkap: segmentasi mungkin melewatkan piksel tepi, atau ROI internal mungkin menghilangkan sebagian target. Periksa citra dan ROI bahkan ketika flag-nya false.

Unduh dan reproduksi

Unduh ZIP lengkap, sumber Python, hasil yang diharapkan, README, dan manifest. ZIP mencakup input, referensi, mask yang diekstraksi, dan overlay kesalahan, semuanya dapat dihasilkan ulang dari sumber yang sama.

Lingkungan yang diuji: Linux x86_64, Python 3.12.3, NumPy 1.26.4, dan OpenCV 4.6.0. Versi dependensi dipatok untuk reproduksi, bukan sertifikasi sistem operasi atau versi Python lain.

Setelah mengekstrak ZIP, jalankan:

python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python experiment.py --self-test
.venv/bin/python experiment.py --verify expected.json --out reproduced

Di Windows, ganti .venv/bin/python dengan .venv\Scripts\python.exe. Direktori keluaran tidak boleh sudah ada; keluaran yang sudah ada tidak ditimpa. JSON hasil dan berkas PNG setiap kondisi disimpan. Keluaran baseline disertakan di bawah samples/.

Ubah V minimum dengan:

.venv/bin/python experiment.py --min-v 40 --out lower-v

Hanya dim_lower_v yang selalu menggunakan 40; kondisi lain menggunakan nilai yang diberikan. Hasil yang diubah sengaja gagal saat dibandingkan dengan baseline expected.json. Jangan berharap verifikasi baseline lulus setelah mengubah eksperimen.

Tujuh pengujian mencakup persegi panjang yang diketahui, mask area-sama/lokasi-berbeda, mask kosong, hubungan antar tujuh kasus, input tidak valid, hasil yang diharapkan yang dimodifikasi, dan penghilangan ROI. Unduhan asli tidak memiliki fitur pemasukan foto nyata; adapter peramban tersedia di atas.

Evaluasi pada tanaman terukur sebelum membuat klaim biologis

Berikut ini adalah usulan evaluasi tahap berikutnya, bukan pekerjaan yang diselesaikan oleh contoh sintetis ini.

  1. Pertahankan ID tanaman, tanggal, iluminasi, geometri kamera, dan citra asli.
  2. Definisikan keanggotaan target, termasuk apakah batang atau daun senesen dihitung, dan buat mask referensi manusia.
  3. Pisahkan citra pengembangan ambang dari citra evaluasi. Pertimbangkan pembagian berdasarkan tanaman atau tanggal akuisisi alih-alih hanya memisahkan frame video yang berdekatan.
  4. Laporkan kesalahan berdasarkan pencahayaan, latar belakang, tumpang tindih, dan clipping, pertahankan metrik area, IoU, dan overlay kesalahan.
  5. Untuk mengestimasi area daun aktual atau massa kering, kumpulkan pengukuran referensi independen yang sesuai dan validasi pemetaan tersebut sebagai model terpisah.

Perubahan area terproyeksi deret waktu dapat diakibatkan oleh postur atau tumpang tindih. Menghasilkan metrik citra tidak menetapkan laju pertumbuhan atau stres. Pertama buat pengamatan tersebut dapat direproduksi, lalu gunakan data referensi untuk menguji apa yang direpresentasikannya.

Zona akar CEA — memisahkan EC, pH, oksigen, dan keseimbangan air

Saat level air turun, apa yang harus diganti?

Larutan nutrisi turun dari 100 L menjadi 90 L. Pengamatan itu saja tidak dapat membedakan evaporasi, penyerapan air tanaman, kebocoran, atau drainase. Itu juga tidak menetapkan penyerapan nutrisi. Memulihkan volume dan memulihkan komposisi nutrisi adalah keputusan yang terpisah.

Mengikuti panduan lingkungan cahaya, artikel ini memeriksa lingkungan akar. Artikel ini memperkenalkan sistem larutan resirkulasi; ini bukan resep tanaman atau implementasi dosis otomatis. Semua contoh numerik bersifat sintetis.

Zona akar adalah wilayah tempat akar menukar air, nutrisi, dan gas dengan sekitarnya. Pembacaan reservoir berguna, tetapi tidak harus menjelaskan permukaan akar, ujung saluran, atau interior substrat.

Jaga agar lima pengukuran tetap berbeda

Pengukuran Makna dan satuan Apa yang tidak ditetapkan sendirian
EC Konduktivitas listrik, seperti mS/cm Konsentrasi nitrat, kalium, atau kalsium individual
pH Besaran logaritmik terkait aktivitas ion hidrogen Asam atau basa yang diperlukan untuk mencapai pH target
Oksigen terlarut (DO) mg/L atau persen saturasi Laju pengiriman oksigen ke permukaan akar
Suhu air °C di lokasi pengukuran Suhu udara atau distribusi suhu akar penuh
Volume dan aliran L dan L/menit, misalnya Penyerapan nutrisi individual

Ini adalah tabel perencanaan pengukuran. Kondisi yang dapat diterima bergantung pada tanaman, tahap pertumbuhan, dan sistem produksi.

EC tidak dapat merekonstruksi komposisi

1 mS/cm = 1.000 µS/cm = 1 dS/m. Catat satuan. Konduktivitas juga berubah dengan suhu cairan: pertahankan suhu terukur, pengaturan kompensasi, dan suhu referensi, dan bedakan pembacaan terkompensasi dari yang tidak terkompensasi.

EC tidak mengungkapkan konsentrasi garam individual, seperti dijelaskan dalam panduan uji air Oklahoma State University. Satu pembacaan tidak dapat membedakan penipisan satu nutrisi dari akumulasi ion lain.

Tampilan "ppm" turunan-EC juga bukan pengukuran nutrisi individual. Catat faktor konversinya dan bedakan dari hasil konsentrasi laboratorium. Gunakan analisis air sumber dan larutan ketika komposisi diperlukan.

Panduan manajemen nutrisi OSU mengidentifikasi pengujian air sumber, konsentrasi garam, pH, alkalinitas, dan rasio nutrisi sebagai hal yang relevan. Inferensi operasional kami adalah menghindari memperlakukan kembalinya ke setpoint EC sebagai bukti bahwa formulasi asli telah dipulihkan.

Catat pH dan alkalinitas secara terpisah

pH menjelaskan keasaman atau kebasaan saat ini. Karena bersifat logaritmik, rata-rata terbobot-volume dari dua pembacaan pH umumnya tidak memberikan pH larutan campuran. USGS: pH and Water

Alkalinitas mengukur kapasitas penetralan asam. Dua air dengan pH awal yang sama dapat merespons secara berbeda terhadap penambahan asam yang sama ketika alkalinitasnya berbeda. USGS: Alkalinity and Water

Aturan yang selalu menambahkan dosis yang sama untuk kesalahan pH 0,5 unit mengacaukan besaran-besaran ini. Untuk mengevaluasi suatu intervensi, catat air sumber, volume reservoir, zat dan jumlah yang ditambahkan, dan waktu pengukuran setelah pencampuran. Keseimbangan air di bawah tidak dapat menghitung dosis yang diperlukan.

Oksigen memerlukan jalur pengiriman

Kelarutan oksigen kesetimbangan bergantung pada suhu air, tekanan atmosfer, dan salinitas. USGS DOTABLES menggunakan kondisi ini untuk menghitung kelarutan. Pada tekanan dan salinitas yang sama, air yang lebih hangat umumnya menahan lebih sedikit oksigen terlarut pada kesetimbangan. Periksa kondisi konversi saat membandingkan mg/L dan persen saturasi.

Akar memerlukan oksigen untuk respirasi. Panduan sayuran daun hidroponik Cornell membahas pasokan oksigen akar dan suhu air. Pembacaan DO reservoir yang tampaknya memadai tidak menetapkan kondisi yang sama di dalam massa akar yang padat. Catat sirkulasi, aerasi, dan lokasi sampling, termasuk perbedaan antara inlet dan outlet saluran tanam.

Diagram 2 · Use the button to switch views
Sistem resirkulasi konseptual dengan input dan kehilangan eksternal, sirkulasi internal, dan pengamatan reservoir serta zona akar yang terpisah.

Untuk batasan yang melingkupi seluruh sistem, sirkulasi internal bukan input air eksternal. Diagram ini tidak menyiratkan pencampuran sempurna atau oksigen seragam.

Dengan substrat, retensi air dan jalur udara juga penting. DO reservoir saja tidak menetapkan aerasi substrat. Jangan menerapkan langsung perhitungan kompartemen-cairan-tunggal di bawah pada interior substrat.

Jaga agar akun air dan zat terlarut tetap terpisah

Pilih batasan yang melingkupi seluruh sistem resirkulasi, termasuk reservoir, pipa, dan saluran tanam. Selama satu interval, misalkan penambahan eksternal adalah V_{in}, pembuangan cairan adalah V_{out}, dan evaporasi ditambah air yang ditransfer ke tanaman adalah V_w, semuanya dalam L.

V_1=V_0+V_{in}-V_{out}-V_w

Jangan menambahkan sirkulasi pompa internal sebagai air makeup. Batasan reservoir-saja justru akan menghitung aliran masuk dan baliknya secara eksplisit.

Untuk satu zat terlarut yang dilacak, massa adalah M [mg] dan konsentrasi adalah C=M/V [mg/L]:

M_1=M_0+M_{in}-M_{out}-U-R

U adalah transfer ke tanaman; R adalah penghilangan bersih dari fase cair, seperti presipitasi. Penghilangan dari cairan tidak berarti kehancuran materi. Pembuangan cairan membawa baik air maupun zat terlarut, tidak seperti evaporasi. Untuk pembuangan kontinu, gunakan M_{out}=\int C_{out}(t)Q_{out}(t)dt untuk memperhitungkan konsentrasi yang berubah.

Contoh aritmatika asli berikut memeriksa pembukuan ini. Ini bukan laju penyerapan tanaman terukur, resep pupuk, atau prediksi EC. Mulai dengan 100 L berisi 10.000 mg satu komponen: 100 mg/L. Asumsikan tidak ada penambahan atau presipitasi.

Kasus sintetis Volume akhir Massa zat terlarut akhir Konsentrasi akhir
A: kehilangan 10 L air; zat terlarut tetap 90 L 10,000 mg 111.11 mg/L
B: transfer 10 L air dan 2.000 mg ke tanaman 90 L 8,000 mg 88.89 mg/L
C: buang 10 L larutan seragam 90 L 9,000 mg 100.00 mg/L

Penurunan volume yang sama dapat disertai konsentrasi yang naik, turun, atau tidak berubah. Menambahkan 10 L air yang tidak mengandung zat terlarut yang dilacak memulihkan A menjadi 100 mg/L, tetapi B hanya mencapai 80 mg/L. Memulihkan volume tidak memulihkan massa zat terlarut.

Reproduksi perbandingan dalam Python

Simpan yang berikut sebagai root_zone.py dan jalankan python3 root_zone.py. Hanya pustaka standar Python yang diperlukan.

from math import isfinite


def concentration(volume_l, mass_mg):
    if not (isfinite(volume_l) and isfinite(mass_mg)):
        raise ValueError("finite values required")
    if volume_l <= 0 or mass_mg < 0:
        raise ValueError("positive volume and nonnegative mass required")
    return mass_mg / volume_l


initial_v, initial_m = 100.0, 10000.0
initial_c = concentration(initial_v, initial_m)
cases = {
    "A": (initial_v - 10, initial_m),
    "B": (initial_v - 10, initial_m - 2000),
    "C": (initial_v - 10, initial_m - 10 * initial_c),
}
for name, (volume, mass) in cases.items():
    print(f"{name}: {concentration(volume, mass):.2f} mg/L")
print(f"B + water: {concentration(cases['B'][0] + 10, cases['B'][1]):.2f} mg/L")

Keluarannya adalah 111.11, 88.89, 100.00, dan 80.00 mg/L. Ubah penghilangan 2.000 mg pada B menjadi 1.000 mg: setelah kehilangan volume, konsentrasi menjadi 100 mg/L. Penyerapan dapat terjadi bahkan ketika konsentrasi tidak berubah. Volume nol dan massa sisa negatif memunculkan kesalahan.

Kode ini tidak menghitung EC, pH, atau DO. Pembukuan yang benar untuk satu komponen tidak memvalidasi kesetimbangan kimia multikomponen atau respons tanaman.

Tentukan apa yang diamati selanjutnya

Ini adalah usulan kombinasi pengamatan, bukan aturan dosis otomatis.

Pengamatan Pemeriksaan berikutnya
EC naik sementara volume turun Riwayat makeup dan pembuangan, suhu cairan dan kompensasi, komposisi air dan larutan
EC stabil sementara kondisi tanaman berubah Komponen individual, DO dan suhu zona akar, aliran, riwayat cahaya dan udara
pH berubah lagi setelah penyesuaian Waktu pencampuran dan pengukuran, alkalinitas air sumber, riwayat penambahan
DO reservoir dan outlet berbeda Pembacaan tersinkronisasi, kondisi sensor, sirkulasi, aerasi, dan distribusi akar

Kaitkan waktu, lokasi, satuan, dan kalibrasi dengan volume air, makeup, pembuangan, dan penambahan. Penempatan sensor rinci, manajemen nutrisi individual, dan kontrol dosis adalah langkah selanjutnya. Fondasi di sini adalah membedakan konsentrasi yang teramati dari massa yang tersisa dalam sistem.

What to read next

Tinjau perubahan yang hilang akibat pengambilan sampel.Pengambilan sampel dan aliasing: mengapa polling yang lebih cepat saja tidak cukupReview the backgroundKontrol iklim CEA — suhu, kelembaban, sensor, respons, dan keterkaitanContinue the seriesDosis nutrisi CEA — akuntansi tangki, kalibrasi pompa, dan kontrol status