# Локальный просмотрщик Python

Программа просмотра гиперспектров является примером ПО для чтения, визуализации и первичного анализа гиперспектральных данных.

Основной репозиторий программы расположен по адресу: <https://github.com/copterspace/hspviewer>

Для работы программы необходимо наличие на компьютере версии Python 3.7 и выше, а также OpenCV.

Запуск программы из командной строки осуществляется командой `python hyperspecter_viewer.py`.

Выход из программы осуществляется с помощью клавиши ESC.

### Чтение гиперкуба

Диалог чтения гиперспектральных данных открывается при запуске программы. Также возможно прочитать новый куб, нажав клавишу O (латинскую - Open).

Поддерживается чтение гиперкубов в следующих форматах:

* **.npy** - внутренний формат модуля numpy Python (по умолчанию)
* **.tiff** - многослойный GeoTIFF
* .**jpg, .jpeg, .png, .bmp** - RGB изображения, открываются как гиперкуб с 3 слоями

### Просмотр гиперкуба

После чтения гиперкуба открывается окно визуализации гиперкуба (Image) и окно настроек (Settings).

![Image - окно визуализации гиперкуба](https://1732167612-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MRYwmIEa93EiW8VgRbx%2F-MRxfVts_AuGJLJYfY36%2F-MRxfeRBZdBGS2M32xsO%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=ca75c221-1eb5-4d15-b12a-8e77dd4ff482)

![Settings - окно настроек программы](https://1732167612-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MRYwmIEa93EiW8VgRbx%2F-MRxfVts_AuGJLJYfY36%2F-MRxfznvMVkvu4G0DrwH%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=df89734e-9261-4d91-a9be-7041b6b246e6)

В окне Settings отображаются следующие настройки:

* **layer** - номер слоя гиперкуба, отображаемого в окне Image
* **red\_edge** - номер крайнего слоя видимого спектра. Следующие слои после этого слоя считается, что находятся в инфракрасном спектре, и отображаются как чёрно-белые изображения, без использования цветосинтеза
* **num\_points** - количество точек для сравнительного анализа спектра. Возможны значения от 1 до 9

Слои гиперкуба можно сохранить в виде отдельных картинок в формате .png, с помощью клавиши W. Вызывается диалог для выбора имени файла. При сохранении к имени файла добавляется номер слоя гиперкуба.

### Диаграмма спектра точек гиперкуба

Кликом левой кнопки мыши в окне Image выделяются точки, гистограмма слоёв гиперспектра для которых отображается в окне hist:

![hist - гистограмма спектров выделенных точек](https://1732167612-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MRYwmIEa93EiW8VgRbx%2F-MRximzlqY850A20g7jI%2F-MRxiqB7TnXDry3321Ox%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=948df390-eb2b-46db-a066-aac62089eb85)

Кликом левой кнопки мыши на окне гистограммы можно выбрать слои, по которым осуществляется расчёт Евклидова расстояния точек гиперкуба (см ниже). По умолчанию выбраны все слои. Клик правой кнопки мыши в окне hist - инвертирует выделение.

### Сохранение спектров точек в файлы csv

Гистограммы спектров выделенных точек гиперкуба можно сохранить в файлы в формате CSV. Диалог выбора имени файла вызывается клавишей S.

### Первичный анализ гиперкуба

В качестве первичного алгоритма анализа гиперкуба используется расчёт [Евклидова расстояния](https://wiki.loginom.ru/articles/euclid-distance.html) (корень из суммы квадратов) для выбранной точки или средней для выбранной прямоугольной области куба.

Точка или область выбирается правой кнопкой мыши а окне Image.

Результат расчёта отображается в окне Distances Map:

![Distances Map - карта Евклидовых расстояний спектра ](https://1732167612-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MRYwmIEa93EiW8VgRbx%2F-MRxkdqGayPo7aUUOA5u%2F-MRxmQ-Uo-vGtncn-rhT%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=94098d3a-107a-414e-9f8a-c79c070d7a1d)

Наиболее похожие на выбранную точку спектры на карте расстояний выделяются более светлым оттенком.&#x20;

Таким образом можно находить объекты с наиболее похожими спектральными характеристиками.
