🛰️ Класифікатор Земної Поверхні — Піксельний K-Means Наживо
Спостерігайте, як справжня кластеризація k-means групує синтетичні мультиспектральні супутникові пікселі в класи земного покриву (вода, рослинність, забудова, оголений ґрунт) наживо, перекластеризуючи їх при зміні ваг спектральних каналів.
Про цю симуляцію
Ця симуляція генерує синтетичну мультиспектральну супутникову сцену 56×56 пікселів — водойму, ділянку рослинності, забудований квартал і фон з оголеним ґрунтом, кожен із характерною сигнатурою відбиття в червоному й ближньому інфрачервоному діапазонах плюс шум сенсора для кожного пікселя — а потім запускає справжній алгоритм кластеризації k-means з нуля, щоб згрупувати кожен піксель у класи земного покриву, використовуючи лише його спектральні значення: відбиття в червоному, відбиття в ближньому інфрачервоному (NIR) та похідний вегетаційний індекс NDVI. Просторова позиція ніколи не використовується на етапі кластеризації, тож отримана карта земного покриву є чистою демонстрацією неконтрольованої спектральної класифікації.
🔬 Що показано
Карта земного покриву, що оновлюється наживо й перефарбовується за ID кластера, поряд зі спектральною діаграмою розсіювання вибраних пікселів у просторі ознак Red–NIR із позначеними центроїдами. k-means++ ініціалізує центроїди, а потім алгоритм Ллойда чергує справжній крок призначення за евклідовою відстанню та крок оновлення середнього центроїда, доки призначення не перестануть змінюватися або не буде досягнуто порогу зсуву — той самий алгоритм, що використовується для неконтрольованої класифікації земного покриву на справжніх супутникових каналах.
🎮 Як користуватися
Задайте кількість класів земного покриву k (2–8), а потім перетягніть повзунки ваги Red, NIR і NDVI, щоб змінити форму спектрального простору ознак, у якому працює кластеризація — кожна зміна повторно ініціалізує центроїди та перекластеризує наживо. Використовуйте «Запустити наживо», щоб спостерігати збіжність ітерацій у реальному часі, «Крок», щоб просуватися по одній ітерації Ллойда за раз, або «Регенерувати сцену», щоб намалювати цілком нове синтетичне зображення. Клацніть будь-який піксель на карті, щоб переглянути його сирі канали, NDVI і призначений клас.
💡 Чи знали ви?
NDVI = (NIR − Red) / (NIR + Red) працює, тому що хлорофіл у здоровому листі сильно відбиває ближнє інфрачервоне світло, водночас поглинаючи червоне світло для фотосинтезу — спектральний відбиток, що майже не пов'язаний із видимим кольором об'єкта. Саме тому здорова рослинність і, скажімо, зелений дах можуть виглядати схоже для ока, але перебувати в цілком різних областях простору NDVI.
Часті питання
Як k-means перетворює супутникові пікселі на карту земного покриву?
Кожен піксель представлений виключно своєю спектральною сигнатурою — симульованим відбиттям у червоному, ближньому інфрачервоному (NIR) та NDVI, похідним від цих двох каналів. k-means ніколи не дивиться, де саме піксель розташований у зображенні; він повторно призначає кожен піксель до того з k центроїдів, який найближчий у цьому 3-вимірному спектральному просторі (евклідова відстань), а потім переміщує кожен центроїд до середнього значення пікселів, які наразі до нього призначені. Після достатньої кількості ітерацій кластери стабілізуються, і перефарбування зображення за ID кластера створює карту земного покриву виключно на основі спектральної подібності.
Навіщо використовувати NDVI разом із сирими каналами red і NIR?
NDVI = (NIR − Red) / (NIR + Red) — це нормалізоване співвідношення, яке чітко відділяє здорову рослинність (високий NDVI, оскільки хлорофіл сильно відбиває NIR, але поглинає червоне світло) від води, оголеного ґрунту та забудованих поверхонь (низький або від'ємний NDVI). Подача NDVI разом із сирими каналами дає k-means додаткову, дуже дискримінативну вісь, тому повзунок ваги рослинності часто дає найчіткіший поділ класів.
Що відбувається зі збіжністю, якщо змінити ваги каналів під час виконання?
Зміна ваги каналу масштабує метрику відстані, яку використовує k-means, що змінює форму кластерів у просторі ознак — тож симуляція повторно ініціалізує центроїди за допомогою k-means++ і перекластеризує з нуля. Зниження ваги NIR, наприклад, ускладнює розділення пікселів води й оголеного ґрунту, оскільки обидва мають низьке відбиття в червоному, і зазвичай ви побачите збіжність інерції до вищого фінального значення, а іноді й більшу кількість ітерацій.
Чи так насправді працює реальна супутникова класифікація земного покриву?
Основна механіка справжня й відповідає неконтрольованій класифікації дистанційного зондування: попіксельна кластеризація в мультиспектральному просторі ознак є стандартною технікою (кластеризація ISODATA й k-means використовуються в інструментах на кшталт ENVI та QGIS). Ця симуляція використовує синтетичні значення відбиття з гаусовим шумом для кожного пікселя, а не справжні калібровані супутникові канали, і не враховує атмосферну корекцію, маскування хмар та додаткові канали (SWIR, теплові), які використовують операційні класифікатори, тож сприймайте це як достовірну навчальну модель етапу кластеризації, а не виробничий конвеєр.
Чому k-means іноді об'єднує забудову й оголений ґрунт в один кластер?
Забудованим поверхням та оголеному ґрунту в цій симуляції навмисно надані схожі спектральні сигнатури — обидва мають помірне, приблизно збалансоване відбиття в red і NIR та низький NDVI — що відображає реальну проблему дистанційного зондування, коли бетон, дахи й суха земля часто займають перетинні області спектрального простору. Збільшення k або коригування ваг каналів іноді може їх розділити, але маючи лише red, NIR і NDVI, не завжди є достатньо роздільного сигналу, так само як на практиці класифікатори часто додають додаткові канали (наприклад, SWIR) спеціально для вирішення цієї неоднозначності.
Справжня кластеризація k-means (ініціалізація k-means++, призначення за евклідовою відстанню, оновлення середнього центроїда, ітерація до збіжності), застосована до синтетичних мультиспектральних пікселів — каналів red, NIR і NDVI — на сітці зображення 56×56 із чотирма просторовими регіонами земного покриву та шумом на піксель.
3D · рушій Three.js / WebGL · ціль 60 кадрів/с · працює повністю на клієнті, без встановлення