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.
브라우저에서 투영 면적 실험을 해보세요
위 패널은 Python 설치 없이 합성 이미지 실험을 실행합니다. clean, green-tag, dim, clipped 장면을 선택하고 최소 밝기 V, 관심 영역, mm/픽셀을 변경하세요. 아홉 개의 프리셋에는 발표된 일곱 가지 조건 모두와, 지나치게 작은 ROI, 빈 선택이 포함됩니다. 프리셋은 모든 입력값을 재설정하며, 임계값을 수동으로 변경하면 dim이 회복되는 경우도 함께 바뀝니다.
입력값, 프레임 내 참조값, 추출된 마스크, 오차 오버레이를 확인하세요. 빨간색은 위양성을, 파란색은 위음성을 표시합니다. 갈색 경계선은 입력값 위에 선택된 ROI를 나타냅니다. 결과를 A로 저장하고 입력값 하나를 변경하여 동일한 표시 척도에서 이미지와 지표를 비교하세요. 데이터 표는 수평 픽셀 구간(0부터 시작하는 x/y와 길이)을 제공하며, 다운샘플링 없이 각 이미지 영역을 정확하게 재구성합니다. 실험을 유지하려면 조건을 공유하거나 결과 JSON을 다운로드하세요.
이미지는 원래의 320×240 기하학적 장면 그대로이며, 실제 사진 업로드나 카메라 입력은 없습니다. 원본 NumPy 기하학 및 측정 함수는 변경 없이 그대로 재사용됩니다. 브라우저는 OpenCV 변환/범위 선택만을 세 가지 고정 RGB 색상에 대한 검증된 조회로 대체합니다: 배경(235,235,235), 대상(50,160,65), 어두운 대상(20,60,25). 이들의 OpenCV 4.6.0 uint8 HSV 값은 각각 (0,0,235), (64,175,160), (64,170,60)입니다. 이는 범용 HSV 변환기가 아닙니다. H 35–85와 S 80–255는 고정되며, V 최솟값은 0에서 255까지 조정 가능합니다(양 끝값 포함). 형태학적 처리는 적용되지 않습니다.
고정된 태그 제외 ROI는 (50,20,230,190)이며, 작은 ROI는 (140,60,20,30)으로, x/y/너비/높이 픽셀 단위입니다. 둘 다 식물에 맞춰 조정되지 않습니다. 척도는 가정된 기준면 변환값으로 0.1에서 1.0mm/픽셀까지의 범위를 가지며, 교정값이 아닙니다. 척도가 변해도 이미지는 그대로 유지됩니다. touches_frame은 예의 경우 1로, 아니오의 경우 0으로 표시됩니다. 빈 선택의 정밀도는 정의되지 않습니다(—). 클리핑된 장면에서 완벽한 IoU라 하더라도 이미지 바깥 부분에 대해서는 아무것도 말해주지 않습니다. 이 출력값들은 생물량, 생장, 스트레스, 실제 잎 표면적을 측정하지 않습니다.
원본 다운로드와 저장된 기준값은 변경되지 않습니다. 아래의 로컬 재현 안내는 선택 사항입니다. 브라우저 어댑터는 OpenCV 없이 NumPy를 사용합니다. 진입점, 커널, 팔레트를 함께 저장하면 NumPy가 설치된 환경에서 로컬로 실행할 수 있습니다.
CEA 센싱과 유량 — CO₂ 및 영양액을 어디서 측정할 것인가
동일한 표시값이 다른 장소와 시간을 가리킬 수 있습니다
저장조의 DO는 재배 채널 출구의 DO와 다릅니다. 이 차이를 뿌리의 산소 소비로 돌리기 전에, 센서가 비교 가능한 시간을 관찰하는지, 교정이 일관적인지, 이동 중 샘플이 변하는지를 확인하십시오.
근권 가이드는 EC, pH, DO, 물수지를 분리했습니다. 이 글은 이들을 어디서, 어떻게 비교할 것인가를 다룹니다. 온도/습도 센서 가이드의 지연 및 교정 개념을 재사용하면서, CO₂, 영양액, 유량에 특화된 문제를 추가합니다.
아래의 배치표와 조사 절차는 저희가 제안하는 설계 접근법입니다. 이는 시설 측정값도, 필수 센서 개수도, 보편적인 작물 경보 임계값도 아닙니다.
관찰해야 할 차이를 결정하십시오
| 대상 | 비교 지점 예시 | 함께 기록할 항목 |
|---|---|---|
| 작물 구역 CO₂ | 캐노피 근처, 공급 공기, 배기 또는 반환 공기 | 높이, 주입량, 환기, 출입문, 온도 및 RH |
| EC, pH, 수온 | 혼합 저장조, 재배 채널 입구 및 출구 | 원수, 첨가물, 부피, 순환 |
| DO | 저장조, 뿌리 근처, 채널 출구 | 온도, 폭기, 센서 기술 |
| 액체 유량 | 보충수, 선택된 분기, 배출 | 유량, 위치, 밸브 상태 |
| 수위 및 압력 | 저장조, 필터 전/후단 | 수위-부피 관계, 압력 기준, 고도 |
| 공기 이동 | 선반 앞/뒤, 서로 다른 높이 | 프로브 방향, 평균화 시간, 팬 상태 |
모니터링에는 고정 지점을, 매핑에는 휴대용 측정을 사용하십시오. 이동식 조사 중 시간에 따른 변화를 구분하기 위해 고정 기준점을 유지하십시오. 센서 ID와 독립적으로 위치 ID를 부여하여 교체가 위치 이력을 훼손하지 않도록 하십시오.
CO₂ 자체 교정이 재배 조건에 부합합니까?
CO₂ 배출구 바로 옆에서의 측정값이 자동으로 캐노피 전체를 대표하지는 않습니다. 주입, 공급/배기 공기, 사람의 호흡과의 관계를 기록하십시오. 주입 장비를 진단하는 지점은 작물 상태를 평가하는 지점과는 다른 목적을 가집니다.
교정 알고리즘을 확인하십시오. 2018년 Sensirion SCD30 현장 교정 노트는 400ppm에 해당하는 최소 농도를 사용하고 해당 농도에 정기적으로 노출될 것을 요구하는 ASC를 설명합니다.
저희의 추론은 지속적으로 CO₂가 강화된 방이 이 가정을 충족하지 못할 수도 있다는 것입니다. 이는 문서화된 알고리즘에 관한 것이며, 모든 CO₂ 센서에 해당하는 것은 아닙니다. 선택한 모델 및 펌웨어의 지침을 따르고 기준 가스나 교정된 계측기와의 비교를 계획하십시오. 역사적으로 사용된 400ppm 가정이 현재의 실외 교정값을 보장하는 것은 아닙니다.
CO₂ 장치에 내장된 온도/RH 출력값은 캐노피를 대표하는 공기가 아니라 그 인클로저 상태를 나타낼 수 있습니다. 환경 보상 입력값을 작물 환경 평가에 사용되는 측정값과 구분하십시오.
EC, pH, DO는 서로 다른 점검이 필요합니다
USGS 다중 파라미터 계측기 매뉴얼은 보관, 유지보수, 교정, 측정, 보고를 연결합니다. 이 매뉴얼의 자연수 범위는 작물 설정값이나 특정 영양액에 대한 적합성을 규정하지 않습니다.
다음의 제안된 체크리스트는 그 일반적인 접근법을 적용한 것입니다. 실제 절차와 용액은 계측기 문서와 일치해야 합니다.
| 파라미터 | 확인할 항목 |
|---|---|
| EC | 전도도 표준값 및 온도, 예상 범위, 셀 상수, 온도 보상 |
| pH | 범위에 맞는 완충액, 온도, 전극/접합부 상태, 보관 |
| DO | 광학식 또는 전기화학식 방식, 교정 조건, 압력/염도 보상, 막 또는 캡 상태 |
| 공통 | 조정 전 오차, 세척/조정 후 결과, 표준물질 정보, 날짜, 안정화 시간 |
표준물질에서의 일치가 설치 후 대표성 있는 판독값을 보장하지는 않습니다. 첨가 직후 기포, 침전물, 정체된 액체, 국지적 농도 차이를 조사하십시오.
DO 측정 기술이 중요합니다. YSI의 측정 지침은 광학식 센서가 산소를 소비하지 않으며 측정 원리상 교반이 필요하지 않지만, 유동이 응답 시간을 개선할 수 있다고 설명합니다. 전기화학식과 광학식 장치에 동일한 유동 요건을 가정하지 마십시오. 광학식 센서라 하더라도 의도된 근권 환경을 대표하는 액체를 샘플링해야 합니다.
샘플링 라인은 센서에 더 오래된 액체를 전달합니다
원격 유량 셀은 표시 시간을 샘플링 지점의 조건과 분리합니다. 합성 라인 부피 0.50L, 일정한 유량 0.25L/min을 가정하고, 혼합이나 분산이 없는 이상적인 치환을 가정하면 다음과 같습니다.
이 2분은 이상적인 라인 이동만을 나타냅니다. 셀 내 혼합, 센서 응답, 통신 지연은 추가적인 효과입니다.
유량을 0.50L/min으로 두 배 늘리면 이 이상적인 시간은 1분으로 줄어듭니다. 실제 라인과 셀은 혼합이 일어나며, 온도 및 기체 교환도 샘플을 변화시킬 수 있습니다. 타임스탬프를 2분만큼 이동시킨다고 해서 원래 조건이 반드시 재구성되는 것은 아닙니다.
샘플링 위치, 라인/셀 구성, 유량, 계측기 측정 시각, 수신 시각을 별도로 기록하십시오. 샘플링 지점을 전환할 때는 이전 샘플로부터의 잔류 영향도 확인하십시오.
펌프 명령, 유량, 수위, 압력을 비교하십시오
펌프 ON은 유량 측정이 아닙니다. 총 송출량과 각 분기로의 송출량은 서로 다른 관찰값입니다. 선택한 유량계의 직관 구간, 만관 상태, 범위, 기포에 대한 요구사항을 따르십시오.
저장조 형상을 이용해 수위를 부피로 환산하십시오. 단면적이 일정한 경우 부피 변화는 면적 곱하기 수위 변화와 같습니다. 이 환산은 바닥이 경사진 용기에는 보편적으로 적용되지 않습니다. 압력 기반 수위 측정 역시 밀도와 기준 압력에 대한 고려가 필요합니다.
필터 차압은 비교에 도움이 될 수 있지만 유량에도 좌우됩니다. 운전 조건이 다르면 차압 상승만으로 막힘을 증명할 수 없습니다. 측정 고도, 게이지 압력과 절대 압력의 구분, 단위를 기록하십시오.
물수지 잔차로 불일치를 찾으십시오
여기서 경계는 저장조만입니다. Q_{in}은 모든 유입 흐름을, Q_{out}은 순환 공급 및 회수를 포함한 모든 유출 흐름을 포함합니다. 이는 이전 글의 전체 시스템 경계와는 다릅니다. 합성 예제는 증발과 같은 다른 항을 0으로 설정합니다.
L/min과 분을 사용하면 잔차 r은 L 단위로 나옵니다. 저희의 원래 예시에서는 유입량이 1.0L/min, 유출량이 0.2L/min이며 5분간 지속됩니다. 예측된 증가량은 4L이지만, 수위로부터 유추된 부피는 100L에서 101L로만 증가합니다. 잔차는 −3L입니다.
이는 기록되지 않은 흐름, 유량/수위 편향, 시간 차이, 누락된 손실에 대한 조사를 촉구합니다. 이것이 누수의 증거는 아닙니다.
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")
measurement_check.py로 저장하고 python3 measurement_check.py를 실행하여 2.0 min과 -3.0 L을 얻으십시오. 유량은 각 구간 내에서 일정하며, 구간들은 관측 기간 전체를 빈틈이나 중첩 없이 덮는다고 가정됩니다. 이 작은 예제는 타임스탬프를 받지 않으므로, 그 가정을 자동으로 검증할 수 없습니다.
최종 부피를 104L로 바꾸면 잔차는 0이 됩니다. 동일한 유량으로 5분을 2분과 3분으로 나누어도 결과는 변하지 않습니다. 측정 데이터의 경우, 누락된 유량을 0으로 취급하는 대신 불완전한 적분을 무효화하십시오.
각 종점 부피에 0.5L의 오차 범위가 있고, 각 유량에 0.1L/min의 오차 범위가 있으며, 지속시간은 정확하다고 가정합시다. 5분에 걸친 잔차 오차에 대한 최악의 경우 기여도는 0.5+0.5+5(0.1+0.1)=2.0L입니다. 이 가정만으로는 3L의 불일치를 설명할 수 없습니다. 이는 예시를 위한 한계값이며, 제품 정확도나 통계적 신뢰구간이 아닙니다. 결함을 진단하기 전에 이 한계값과 누락된 항을 검증하십시오.
순환과 환기를 분리하십시오
순환은 실내 공기를 이동시키고 혼합하며, 환기는 외부와 공기를 교환합니다. NC 주립대학교의 온실 가이드는 이 둘을 별개로 다룹니다. 순환 팬의 정격 유량을 외부 교환으로서 CO₂ 수지에 넣지 마십시오.
캐노피 기류 조사를 위해서는 프로브 방향, 위치, 평균화 시간, 조명, 팬 상태를 기록하십시오. 선반 앞쪽의 유량이 뒤쪽의 유량을 보장하지는 않습니다. 평균값뿐 아니라 공간적 차이와 변동도 보존하고, 작물 생장이 유동 경로를 바꾸면 조사를 반복하십시오. 하나의 기류 값이 증산이나 질병을 직접 예측하지는 않습니다.
측정 체인을 커미셔닝하십시오
- 관찰 목적과 경계를 정의하고, 위치 ID, 단위, 시간을 정렬하십시오.
- 표준물질이나 기준 계측기와 비교하고, 조정 전/후 결과를 보존하십시오.
- 공간적 조사와 별도로 공동 배치 측정을 통해 계측기 차이를 조사하십시오.
- 운전 로그를 관찰값과 비교하여, 이동, 응답, 통신 지연을 구분하십시오.
- 물수지와 다중 측정을 사용하여 불일치를 찾은 뒤 경쟁하는 원인들을 조사하십시오.
이는 이후의 제어와 추정을 위한 관찰값을 확립합니다. 식물 이미지 추정에도 동일한 규율이 필요합니다. 겉으로 드러난 변화를 생장으로 해석하기 전에 이미지 시각, 조명, 시점을 보존하십시오.
CEA 식물 이미지 — 투영 면적 측정, 잎 면적과의 구분
사진 속 초록색이 많을수록 잎이 많다는 뜻일까요?
동일한 식물이라도 잎의 방향, 겹침, 조명, 카메라 위치가 바뀌면 서로 다른 가시 영역을 차지할 수 있습니다. 따라서 저희의 첫 번째 추정 과제는 이미지에서 선택된 영역의 투영 면적으로 제한됩니다. 이는 잎 표면적, 질량, 수확량, 스트레스를 직접 추정하지 않습니다.
이전의 센싱 가이드는 공간적, 계측기적, 시간적 차이를 분리했습니다. 이미지에도 획득 및 처리 기록이 필요합니다. 여기서는 겹치는 타원들이 합성 입력값을 형성하며, 측정된 식물 사진이나 학습된 모델은 없습니다. 통제된 예제는 실제 식물에 대한 평가를 설계하기 전에 실패 원인을 드러냅니다.
수량을 먼저 정의하십시오
대상 픽셀이 1인 이진 마스크 M(u,v)에 대해, 픽셀 수는 N=\sum_{u,v}M(u,v)입니다. 가정된 등방성 척도 s [mm/픽셀]가 주어지면, 기준면 등가 면적은 다음과 같습니다.
저희의 합성 기준값은 14,738픽셀을 포함합니다. 0.5mm/픽셀에서 이는 3,684.50mm²가 됩니다. 이 척도는 예시를 위해 제공된 것이며, 자동으로 측정된 것이 아닙니다.
| 수량 | 이 페이지가 측정하는 것 | 측정하지 않는 것 |
|---|---|---|
| 마스크 픽셀 수 | 선택된 픽셀의 개수 | 윤곽선으로 둘러싸인 기하학적 면적 |
| 기준면 투영 면적 | 픽셀 수 곱하기 제곱 척도 | 굽어진 잎의 실제 표면적 |
| 가시 합집합 | 위에서 보이는 대상 영역 | 겹치는 각 잎의 면적 합 |
| 초록색 영역 | 색상으로 선택된 후보 | 잎에 대한 보장된 의미론적 식별 |
PlantCV의 크기 분석도 유사하게 라벨링된 영역으로부터 속성을 계산하며 픽셀 치수를 통한 환산을 지원합니다. 영역 추출과 단위 환산을 분리해서 유지하십시오. 저희 코드는 픽셀을 직접 세며 PlantCV를 호출하지 않습니다.
획득 조건과 척도를 일관되게 유지하십시오
카메라 위치와 방향, 초점 거리, 이미지 크기, 노출, 화이트 밸런스, 조명, 식물 ID, 타임스탬프를 기록하십시오. 노출이나 화이트 밸런스가 자동이라면 그 상태를 기록하십시오. 변화하는 이미지 조건에 고정된 임계값을 적용하면 색상 변화가 겉보기 면적 변화로 바뀔 수 있습니다.
200픽셀에 걸친 알려진 100mm 길이는 해당 위치에서 0.5mm/픽셀을 제공합니다. 기준 물체를 측정 평면에 놓고 카메라를 실용적인 한도 내에서 최대한 수직에 가깝게 정렬하십시오. 왜곡이나 원근이 문제가 되는 경우 카메라 교정과 적절한 평면 보정을 사용하십시오. 수평 및 수직 척도가 다른 경우 Ns_xs_y가 필요합니다.
바닥에 놓인 기준 물체가 그 위에서 자라는 잎과 동일한 척도를 공유할 필요는 없습니다. 평면 보정이 3차원 캐노피를 동일 평면으로 만들지는 않습니다. 이러한 가정이 성립하지 않을 때는, 물리적 잎 면적을 주장하는 대신 고정된 획득 조건에서의 픽셀 수나 기준면 등가 면적을 보고하십시오.
0.5mm/픽셀 대신 0.6mm/픽셀을 사용하면 동일한 마스크의 면적이 1.44배, 즉 44% 증가합니다. 올바른 추출이 잘못된 단위 환산과 공존할 수 있습니다.
색상 후보를 선택하십시오
OpenCV 튜토리얼은 HSV로의 변환과 inRange를 이용한 색상 범위 선택을 보여줍니다. 초록색을 선택하는 것은 잎을 인식하는 것과 같지 않습니다.
입력값은 320×240픽셀입니다. OpenCV의 8비트 HSV 표현에서, 이 예제는 H 35–85, S 80–255, V 100–255를 선택합니다. H는 0–360의 각도로 직접 입력되지 않습니다. 저희가 생성한 배열은 RGB이므로 변환에는 COLOR_RGB2HSV를 사용합니다. imread가 반환하는 BGR 이미지에 이 변환을 그대로 재사용하지 마십시오.
핵심 부분은 세 줄입니다. 이미지 생성, 조건 비교, 검증은 전체 다운로드에 포함되어 있습니다.
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))
형태학적 채우기나 작은 연결요소 제거는 적용되지 않습니다. 이러한 처리를 추가하는 경우, 그것이 좁은 잎이나 잎 사이의 틈을 기준 마스크와 대비하여 변화시키는지 확인하십시오.
동일한 기하학적 조건에서 실패 사례를 비교하십시오
생성된 기준값은 세 개의 타원이 프레임 내에서 가시적으로 합쳐진 합집합입니다. 겹치는 부분은 한 번만 계산되며, 프레임 밖 부분은 제외됩니다.
빨간색은 대상으로 선택된 배경을, 파란색은 놓친 대상 픽셀을 표시합니다. 초록색 영역은 입력 색상을 그대로 유지합니다. 이는 합성 도형이며 식물 사진이 아닙니다.
| 조건 | 선택된 픽셀 | 평면 등가 면적 [mm²] | IoU | 해석 |
|---|---|---|---|---|
| clean | 14,738 | 3,684.50 | 1.000 | 합성 기준값과 일치 |
| green_tag | 15,538 | 3,884.50 | 0.949 | 배경 픽셀 800개 추가 |
| green_tag_roi | 14,738 | 3,684.50 | 1.000 | 이 레이아웃에서는 태그가 제외됨 |
| dim | 7,428 | 1,857.00 | 0.504 | 형태 변화 없이 거의 절반을 놓침 |
| dim_lower_v | 14,738 | 3,684.50 | 1.000 | V 최솟값 40이 이 어두운 영역을 회복함 |
| wrong_scale | 14,738 | 5,305.68 | 1.000 | 올바른 마스크, 44% 더 큰 환산값 |
| clipped | 13,016 | 3,254.00 | 1.000 | 프레임 내 기준값과는 일치하나, 물체 전체와는 다름 |
고정된 green_tag_roi는 (50,20)에서 시작하며 너비 230, 높이 190픽셀입니다. 이는 이 합성 태그를 피하기 위해 선택된 것이지, 작물과 무관한 관심 영역이 아닙니다. ROI를 벗어난 생장은 진짜 대상 픽셀을 제외시킬 수 있습니다.
최소 V를 낮추는 것이 보편적인 해결책은 아닙니다. 여기서는 어두운 대상을 회복하지만, 실제 장면에서는 어두운 초록색 배경을 허용할 수도 있습니다. 각 이미지의 정답에 맞춰 임계값을 조정한 뒤 동일한 이미지에서만 정확도를 보고하지 마십시오.
면적과 위치를 별도로 평가하십시오
예측값 P와 기준값 G에 대해, 교집합 대 합집합 비율은 공간적 겹침을 측정합니다.
추가된 픽셀 수와 놓친 픽셀 수가 같으면, 위치가 잘못되었더라도 면적 오차는 0이 됩니다. 기준값 [0,1,1,0]과 예측값 [1,1,0,0]은 각각 두 개의 선택된 픽셀을 포함하지만, 그 IoU는 1/3입니다.
출력값에는 정밀도(선택된 픽셀 중 올바른 비율)와 재현율(기준 픽셀 중 회복된 비율)도 포함됩니다. mask_area_error_percent는 척도 교정으로부터의 물리적 오차가 아니라 기준값에 대한 픽셀 수 오차입니다. wrong_scale에서는 이 값이 0으로 유지됩니다. 두 빈 마스크의 IoU를 포함하여 정의되지 않는 비율은 가정된 완벽한 점수가 아니라 JSON null로 표시됩니다.
touches_frame은 이미지 가장자리에 닿는 선택된 픽셀을 표시합니다. clipped의 경우 참입니다. 이는 불완전한 물체를 모두 감지하지는 않습니다. 분할이 가장자리 픽셀을 놓칠 수도 있고, 내부 ROI가 대상의 일부를 제거할 수도 있습니다. 이 플래그가 거짓인 경우에도 이미지와 ROI를 확인하십시오.
다운로드 및 재현
전체 ZIP, Python 소스, 예상 결과, README, 매니페스트를 다운로드하십시오. ZIP 파일에는 입력값, 기준값, 추출된 마스크, 오차 오버레이가 포함되어 있으며, 모두 동일한 소스로부터 재생성할 수 있습니다.
테스트 환경: Linux x86_64, Python 3.12.3, NumPy 1.26.4, OpenCV 4.6.0. 의존성 버전은 재현을 위해 고정된 것이며, 다른 운영체제나 Python 버전에 대한 인증이 아닙니다.
ZIP 파일 압축 해제 후 다음을 실행하십시오.
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
Windows에서는 .venv/bin/python을 .venv\Scripts\python.exe로 바꾸십시오. 출력 디렉토리는 존재하지 않아야 하며, 기존 출력값은 덮어쓰지 않습니다. 결과 JSON과 각 조건의 PNG 파일이 저장됩니다. 기준 출력값은 samples/ 아래에 포함되어 있습니다.
최소 V를 변경하려면 다음을 사용하십시오.
.venv/bin/python experiment.py --min-v 40 --out lower-v
dim_lower_v만 항상 40을 사용하며, 다른 조건은 제공된 값을 사용합니다. 변경된 결과는 의도적으로 기준 expected.json과의 비교에 실패합니다. 실험을 변경한 후 기준 검증이 통과할 것으로 기대하지 마십시오.
일곱 개의 테스트가 알려진 직사각형, 동일 면적/다른 위치의 마스크, 빈 마스크, 일곱 사례 간의 관계, 잘못된 입력값, 수정된 예상 결과, ROI 누락을 다룹니다. 원본 다운로드에는 실제 사진 수집 기능이 없으며, 브라우저 어댑터는 위에서 이용할 수 있습니다.
생물학적 주장을 하기 전에 측정된 식물에 대해 평가하십시오
다음은 제안된 다음 단계의 평가이며, 이 합성 예제로 완료된 작업이 아닙니다.
- 식물 ID, 날짜, 조명, 카메라 기하학, 원본 이미지를 보존하십시오.
- 줄기나 노화된 잎을 포함할지 여부를 포함하여 대상 소속을 정의하고, 사람이 작성한 기준 마스크를 만드십시오.
- 임계값 개발용 이미지와 평가용 이미지를 분리하십시오. 인접한 비디오 프레임을 단순히 분리하기보다는 식물별 또는 촬영일별 분할을 고려하십시오.
- 조명, 배경, 겹침, 클리핑별로 오차를 보고하고, 면적 지표, IoU, 오차 오버레이를 보존하십시오.
- 실제 잎 면적이나 건중량을 추정하려면 이에 대응하는 독립적인 기준 측정값을 수집하고, 그 매핑을 별도의 모델로 검증하십시오.
시계열 투영 면적 변화는 자세나 겹침에서 비롯될 수 있습니다. 이미지 지표를 산출한다고 해서 생장률이나 스트레스가 확립되는 것은 아닙니다. 먼저 관찰값을 재현 가능하게 만든 뒤, 기준 데이터를 사용하여 그것이 무엇을 나타내는지 검증하십시오.
CEA 근권 — EC, pH, 산소, 물수지의 분리
수위가 내려가면 무엇을 보충해야 할까요?
영양액이 100L에서 90L로 줄어듭니다. 이 관찰만으로는 증발, 식물의 물 흡수, 누수, 배수를 구분할 수 없습니다. 영양분 흡수 여부도 확립되지 않습니다. 부피를 복원하는 것과 영양 조성을 복원하는 것은 별개의 결정입니다.
광 환경 가이드에 이어, 이 글은 근권 환경을 다룹니다. 재순환 용액 시스템을 소개하지만, 이는 작물 배합법이나 자동 투여 구현이 아닙니다. 모든 수치 예시는 합성값입니다.
근권은 뿌리가 주변과 물, 영양분, 기체를 교환하는 영역입니다. 저장조 판독값은 유용하지만, 뿌리 표면, 채널 끝, 배지 내부를 나타내지 않을 수 있습니다.
다섯 가지 측정값을 구분하여 유지하십시오
| 측정값 | 의미와 단위 | 이것만으로 확립되지 않는 것 |
|---|---|---|
| EC | mS/cm 등의 전기전도도 | 개별 질산염, 칼륨, 칼슘 농도 |
| pH | 수소이온 활동도와 관련된 로그 척도 | 목표 pH 도달에 필요한 산 또는 염기의 양 |
| 용존산소(DO) | mg/L 또는 포화도 % | 뿌리 표면으로의 산소 전달 속도 |
| 수온 | 측정 위치에서의 °C | 기온 또는 뿌리 전체의 온도 분포 |
| 부피 및 유량 | 예를 들어 L 및 L/min | 개별 영양분의 흡수량 |
이는 측정 계획을 위한 표입니다. 허용 가능한 조건은 작물, 생장 단계, 생산 시스템에 따라 달라집니다.
EC는 조성을 재구성할 수 없습니다
1 mS/cm = 1,000 µS/cm = 1 dS/m. 단위를 기록하십시오. 전도도는 액체 온도에 따라서도 변하므로, 측정된 온도, 보상 설정, 기준 온도를 보존하고 보상된 판독값과 보상되지 않은 판독값을 구분하십시오.
오클라호마 주립대학교의 수질 검사 가이드에서 설명하듯, EC는 개별 염류 농도를 드러내지 않습니다. 단일 판독값만으로는 한 영양분의 고갈과 다른 이온의 축적을 구분할 수 없습니다.
EC로부터 유도된 "ppm" 표시 역시 개별 영양분의 측정값이 아닙니다. 그 환산 계수를 기록하고 실험실 농도 결과와 구분하십시오. 조성이 필요할 때는 원수 및 용액 분석을 사용하십시오.
OSU의 영양 관리 가이드는 원수 검사, 염류 농도, pH, 알칼리도, 영양소 비율을 관련 요소로 제시합니다. 저희의 운영상 추론은, EC 설정값으로의 복귀를 원래 배합이 복원되었다는 증거로 취급하지 말라는 것입니다.
pH와 알칼리도를 별도로 기록하십시오
pH는 현재의 산성도 또는 염기성도를 나타냅니다. 로그 척도이기 때문에, 두 pH 판독값의 부피 가중 평균이 일반적으로 혼합 용액의 pH를 나타내지는 않습니다. USGS: pH and Water
알칼리도는 산 중화 능력을 측정합니다. 초기 pH가 같은 두 물이라도 알칼리도가 다르면 동일한 산 첨가에 서로 다르게 반응할 수 있습니다. USGS: Alkalinity and Water
0.5 단위의 pH 오차에 대해 항상 동일한 투여량을 추가하는 규칙은 이 두 수량을 혼동합니다. 개입을 평가하려면 원수, 저장조 부피, 첨가된 물질과 양, 혼합 후 측정 시각을 기록하십시오. 아래의 물수지로는 필요한 투여량을 계산할 수 없습니다.
산소에는 전달 경로가 필요합니다
평형 산소 용해도는 수온, 대기압, 염도에 따라 달라집니다. USGS DOTABLES는 이러한 조건을 사용하여 용해도를 계산합니다. 압력과 염도가 같을 때, 일반적으로 따뜻한 물은 평형 상태에서 더 적은 용존산소를 유지합니다. mg/L와 포화도 %를 비교할 때는 환산 조건을 확인하십시오.
뿌리는 호흡을 위해 산소가 필요합니다. 코넬 대학교의 수경 재배 엽채류 가이드는 뿌리의 산소 공급과 수온을 다룹니다. 겉보기에 충분해 보이는 저장조 DO 판독값이 밀집된 뿌리 덩어리 내부에서도 동일한 조건을 보장하지는 않습니다. 재배 채널 입구와 출구 간의 차이를 포함하여 순환, 폭기, 샘플링 위치를 기록하십시오.
전체 시스템을 둘러싸는 경계에서, 내부 순환은 외부 물 입력이 아닙니다. 이 다이어그램은 완전한 혼합이나 균일한 산소 농도를 의미하지 않습니다.
배지를 사용하는 경우, 보수력과 공기 통로 역시 중요합니다. 저장조 DO만으로는 배지의 통기 상태가 확립되지 않습니다. 아래의 단일 액체 구획 계산을 배지 내부에 직접 적용하지 마십시오.
물과 용질 계정을 분리하여 유지하십시오
저장조, 배관, 재배 채널을 포함한 재순환 시스템 전체를 둘러싸는 경계를 선택하십시오. 한 구간 동안, 외부 첨가량을 V_{in}, 액체 배출량을 V_{out}, 증발과 식물로 이동한 물의 합을 V_w로 하며, 모두 L 단위입니다.
내부 펌프 순환을 보충수로 더하지 마십시오. 저장조만을 대상으로 하는 경계라면 그 유출 및 회수 흐름을 명시적으로 계산해야 합니다.
추적하는 하나의 용질에 대해, 질량을 M [mg], 농도를 C=M/V [mg/L]라고 하면 다음과 같습니다.
U는 식물로의 이동량이며, R은 침전과 같은 액상으로부터의 순 제거량입니다. 액체로부터의 제거가 물질의 소멸을 의미하지는 않습니다. 액체 배출은 증발과 달리 물과 용질을 모두 운반합니다. 연속적인 배출의 경우, 변화하는 농도를 반영하기 위해 M_{out}=\int C_{out}(t)Q_{out}(t)dt를 사용하십시오.
다음의 독자적인 산술 예제는 이 회계를 확인합니다. 이는 측정된 식물 흡수율, 비료 배합법, EC 예측값이 아닙니다. 한 성분 10,000mg을 포함한 100L, 즉 100mg/L로 시작합니다. 첨가나 침전은 없다고 가정합니다.
| 합성 사례 | 최종 부피 | 최종 용질 질량 | 최종 농도 |
|---|---|---|---|
| A: 물 10L 손실, 용질은 그대로 | 90L | 10,000mg | 111.11mg/L |
| B: 물 10L와 2,000mg을 식물로 이동 | 90L | 8,000mg | 88.89mg/L |
| C: 균일한 용액 10L 배출 | 90L | 9,000mg | 100.00mg/L |
동일한 부피 감소가 농도의 상승, 하락, 또는 불변을 동반할 수 있습니다. 추적 대상 용질이 전혀 없는 물 10L를 추가하면 A는 100mg/L로 복원되지만, B는 80mg/L에만 도달합니다. 부피를 복원한다고 용질 질량이 복원되는 것은 아닙니다.
Python으로 비교를 재현하십시오
다음 코드를 root_zone.py로 저장하고 python3 root_zone.py를 실행하십시오. Python 표준 라이브러리만 필요합니다.
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")
출력값은 111.11, 88.89, 100.00, 80.00 mg/L입니다. B에서의 2,000mg 제거량을 1,000mg으로 바꾸면, 부피 손실 이후 농도는 100mg/L가 됩니다. 농도가 변하지 않아도 흡수는 일어날 수 있습니다. 부피가 0이거나 남은 질량이 음수이면 오류가 발생합니다.
이 코드는 EC, pH, DO를 계산하지 않습니다. 한 성분에 대한 올바른 회계가 다성분 화학 평형이나 작물 반응을 검증하는 것은 아닙니다.
다음에 관찰할 것을 결정하십시오
다음은 제안된 관찰 조합이며, 자동 투여 규칙이 아닙니다.
| 관찰값 | 다음 점검 사항 |
|---|---|
| 부피가 줄어드는데 EC가 상승함 | 보충 및 배출 이력, 액체 온도 및 보상, 물과 용액의 조성 |
| 작물 상태가 변하는데 EC는 안정적 | 개별 성분, 근권 DO와 온도, 유량, 광량 및 대기 이력 |
| 조정 후 pH가 다시 변함 | 혼합 및 측정 시각, 원수 알칼리도, 첨가 이력 |
| 저장조와 출구의 DO가 다름 | 동기화된 판독값, 센서 상태, 순환, 폭기, 뿌리 분포 |
시간, 위치, 단위, 교정 정보를 물 부피, 보충, 배출, 첨가와 연관시키십시오. 세부적인 센서 배치, 개별 영양 관리, 투여 제어는 이후 단계입니다. 여기서의 기초는 관찰된 농도를 시스템에 남아 있는 질량과 구분하는 것입니다.

댓글
먼저 로그인해 주세요.
아직 데이터가 없습니다.