Идентифицируйте неизвестные области или материалы, используя спектральную библиотеку
определяет область или материал путем согласования его спектральных значений отражательной способности, заданных как score
= spectralMatch(libData
,reflectance
,wavelength
)reflectance
и wavelength
, со значениями, доступными в спектральной библиотеке ECOSTRESS libData
.
задает опции, использующие один или несколько аргументы пары "имя-значение" в сложение с любой комбинацией входных параметров в предыдущих синтаксисах.score
= spectralMatch(___,Name,Value
)
Примечание
Эта функция требует библиотеки Image Processing Toolbox™ гиперспектральной визуализации. Можно установить библиотеку Image Processing Toolbox Hyperspectral Imaging Library из Add-On Explorer. Дополнительные сведения об установке дополнений см. в разделе Получение и управление Дополнений.
Способ спектрального согласования сравнивает спектральную сигнатуру каждого пикселя в кубе гиперспектральных данных с ссылкой спектральной сигнатурой для растительности из файла спектра ECOSTRESS.
Прочтите спектральную сигнатуру растительности из спектральной библиотеки ECOSTRESS.
fileroot = matlabshared.supportpkg.getSupportPackageRoot(); filename = fullfile(fileroot,'toolbox','images','supportpackages','hyperspectral','hyperdata',... 'ECOSTRESSSpectraFiles','vegetation.tree.tsuga.canadensis.vswir.tsca-1-47.ucsb.asd.spectrum.txt'); libData = readEcostressSig(filename);
Считайте гиперспектральные данные в рабочую область.
hcube = hypercube('paviaU.hdr');
Вычислите счета расстояния спектра пикселей гиперспектральных данных относительно спектра ссылки.
score = spectralMatch(libData,hcube);
Отобразите счета расстояния. Пиксели с счетами с низким расстоянием являются более сильными, совпадающими с ссылкой спектром и с большей вероятностью относятся к области растительности.
figure imagesc(score) colorbar
Задайте порог для обнаружения счетов расстояния, которые соответствуют области растительности.
threshold = 0.3;
Сгенерируйте бинарное изображение путем присвоения значения интенсивности 1
для пикселей с счетом меньше заданного порога. Другим областям присваивается значение интенсивности 0. Области максимальной интенсивности в бинарное изображение соответствуют областям растительности в кубе гиперспектральных данных.
bw = score < threshold;
Сегментируйте растительные области куба гиперспектральных данных с помощью индексов областей максимальной интенсивности в бинарном изображении.
T = reshape(hcube.DataCube,[size(hcube.DataCube,1)*size(hcube.DataCube,2) size(hcube.DataCube,3)]); Ts = zeros(size(T)); Ts(bw == 1,:) = T( bw==1 ,:); Ts = reshape(Ts,[size(hcube.DataCube,1) size(hcube.DataCube,2) size(hcube.DataCube,3)]);
. Создайте новую hypercube
объект, который содержит только сегментированные области растительности.
segmentedDataCube = hypercube(Ts,hcube.Wavelength);
Оцените цветное изображение RGB куба исходных данных и куба сегментированных данных с помощью colorize
функция.
rgbImg = colorize(hcube,'Method','rgb','ContrastStretching',true); segmentedImg = colorize(segmentedDataCube,'Method','rgb','ContrastStretching',true);
Наложите бинарное изображение на версию RGB исходного куба данных с помощью imoverlay
функция.
B = imoverlay(rgbImg,bw,'Yellow');
Отображение цветных изображений RGB исходного куба данных и сегментированного куба данных вместе с наложенным изображением. Сегментированное изображение содержит только области растительности, которые сегментированы от исходного куба данных.
figure montage({rgbImg segmentedImg B},'Size',[1 3]) title(['Original Image | ' 'Segmented Image | ' 'Overlayed Image'])
Считайте эталонные спектральные сигнатуры из спектральной библиотеки ECOSTRESS. Библиотека состоит из 15 спектральных сигнатур, принадлежащих техногенным материалам, почве, воде и растительности. Выходы являются массивом структур, который хранит спектральные данные, считанные из файлов библиотеки ECOSTRESS.
fileroot = matlabshared.supportpkg.getSupportPackageRoot(); dirname = fullfile(fileroot,'toolbox','images','supportpackages','hyperspectral','hyperdata','ECOSTRESSSpectraFiles'); libData = readEcostressSig(dirname);
Загрузка .mat
файл, который содержит значения отражательной способности и длины волны неизвестного материала в рабочую область. Отражательная способность и значения длины волны вместе составляют тестовый спектр.
load spectralData 'reflectance' 'wavelength'
Вычислите спектральное соответствие между спектром ссылки и тестовым спектром с помощью метода спектрального информационного расхождения (SID). Функция вычисляет счет расстояния только для тех эталонных спектров, которые имеют перекрытие полосы пропускания с тестовым спектром. Функция отображает предупреждающее сообщение для всех других спектров.
score = spectralMatch(libData,reflectance,wavelength,'Method','SID');
Warning: Unable to find overlapping wavelengths between test spectra and library signature number 8
Warning: Unable to find overlapping wavelengths between test spectra and library signature number 9
Warning: Unable to find overlapping wavelengths between test spectra and library signature number 11
Отобразите счета расстояний тестового спектра. Пиксели с более низкими счетами расстояния являются более сильными, совпадающими с ссылкой спектром. Дистанционное значение баллов NaN
указывает, что соответствующий эталонный спектр и тестовый спектр не соответствуют порогу полосы перекрытия.
score
score = 1×15
297.8016 122.5567 203.5864 103.3351 288.7747 275.5321 294.2341 NaN NaN 290.4887 NaN 299.5762 171.6919 46.2072 176.6637
Найдите минимальный счет расстояния и соответствующий индекс. Возвращенное значение индекса указывает строку массива структур libData
который содержит спектр ссылки, который наиболее близко соответствует тестовому спектру.
[value,ind] = min(score);
Найдите совпадающий эталонный спектр при помощи индекса минимального счета расстояния и отобразите детали совпадающих спектральных данных в библиотеке ECOSTRESS. Результат показывает, что тестовый спектр наиболее близко совпадает со спектральной сигнатурой морской воды.
matchingSpectra = libData(ind)
matchingSpectra = struct with fields:
Name: "Sea Foam"
Type: "Water"
Class: "Sea Water"
SubClass: "none"
ParticleSize: "Liquid"
Genus: [0×0 string]
Species: [0×0 string]
SampleNo: "seafoam"
Owner: "Dept. of Earth and Planetary Science, John Hopkins University"
WavelengthRange: "TIR"
Origin: "JHU IR Spectroscopy Lab."
CollectionDate: "N/A"
Description: "Sea foam water. Original filename FOAM Original ASTER Spectral Library name was jhu.becknic.water.sea.none.liquid.seafoam.spectrum.txt"
Measurement: "Directional (10 Degree) Hemispherical Reflectance"
FirstColumn: "X"
SecondColumn: "Y"
WavelengthUnit: "micrometer"
DataUnit: "Reflectance (percent)"
FirstXValue: "14.0112"
LastXValue: "2.0795"
NumberOfXValues: "2110"
AdditionalInformation: "none"
Wavelength: [2110×1 double]
Reflectance: [2110×1 double]
Постройте график значений отражающей способности тестового спектра и соответствующего эталонного спектра. Для целей построения графика и визуализации формы отражательных кривых переключите значения отражающей способности на область значений [0, 1] и интерполируйте значения отражающей способности теста, чтобы соответствовать числовым базовым значениям отражающей способности.
figure testReflectance = rescale(reflectance,0,1); refReflectance = rescale(matchingSpectra.Reflectance,0,1); testLength = length(testReflectance); newLength = length(testReflectance)/length(refReflectance); testReflectance = interp1(1:testLength,testReflectance,1:newLength:testLength); plot(refReflectance) hold on plot(testReflectance,'r') hold off legend('Matching reference reflectance','Test reflectance') xlabel('Number of samples') ylabel('Reflectance value')
libData
- Спектральные данные ECOSTRESSСпектральные данные из файлов ECOSTRESS, возвращенные как массив структур 1 K байта. K - количество файлов спектра, считанных функцией. Каждый элемент массива структур имеет 24 поля, которые содержат информацию заголовка файлов спектра.
Имена полей | Описание |
Name | Имя измеренной выборки или материала |
Type | Тип выборки, такой как "mineral" , "rock" , "tree" , или "manmade" |
Class | Класс типа выборки Для примера, если тип выборки |
SubClass | Подкласс типа выборки Это поле содержит пустой массив или |
ParticleSize | Размер частиц типа образца Это поле содержит пустой массив, кроме |
Genus | Род выборки Это поле содержит пустой массив, кроме |
Species | Виды выборки Это поле содержит пустой массив, кроме |
SampleNo | Номер выборки Это значение является идентификатором для связанной выборки. |
Owner | Владелец выборки |
WavelengthRange | Область значений длин волн измеренной выборки Значение должно быть |
Origin | Расположение, из которого были получены данные |
CollectionDate | Дата, на которую был собранная выборка Это значение в |
Description | Описание измеренной выборки Это поле предоставляет дополнительную информацию о характеристиках выборки. |
Measurement | Спектральный режим измерения, используемый для измерения выборки |
FirstColumn | Первый столбец значений данных в файле спектра |
SecondColumn | Второй столбец значений данных в файле спектра |
WavelengthUnit | Измерительные модули для спектральных длин волн выборок Значение для каждого типа выборки |
DataUnit | Модуль режима спектральных измерений Спектральный режим измерения включает отражающую способность, пропускающую способность и пропускающую способность. Единица модуля - процент. Это поле соответствует |
FirstXValue | Первое значение в первом столбце значений данных в файле спектра |
LastXValue | Последнее значение в первом столбце значений данных в файле спектра |
NumberofXValues | Общее количество значений данных в первом столбце файла спектра |
AdditionalInformation | Дополнительная информация о выборке Это поле включает информацию, которая не является частью спектральных данных. |
Wavelength | Значения длины волны, при которых измерялись отражения |
Reflectance | Значения отражательной способности, измеренные на каждой длине волны |
hcube
- Входные гиперспектральные данныеhypercube
объектВходные гиперспектральные данные, заданные как hypercube
объект. The DataCube
свойство hypercube
объект содержит гиперспектральный datacube.
reflectance
- Значения отражающей способностиЗначения отражающей способности, заданные как C-вектор. C - количество длин волн, для которых были измерены значения отражательной способности.
wavelength
- Значения длины волныЗначения длины волны, заданные как C-вектор. C - количество длин волн, для которых были измерены значения отражательной способности .
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
spectralMatch(libData,hcube,'MinBandWidth',0.5)
'Method'
- Метод спектрального согласования'sam'
(по умолчанию) | 'sid'
| 'sidsam'
| 'jmsam'
| 'ns3'
Метод спектрального согласования, заданный как разделенная запятыми пара, состоящая из 'Method'
и одно из следующих значений:
'sam'
- метод спектрального преобразования углов (SAM), который измеряет подобие между двумя спектрами путем вычисления углового расстояния между ними.
'sid'
- метод спектрального информационного расхождения (SID), который измеряет подобие между двумя спектрами путем вычисления различия между их значениями вероятностного распределения.
'sidsam'
- Смешанный метод спектрального подобия, который измеряет сходство между двумя спектрами путем объединения измерений расстояния SID и SAM.
'jmsam'
- Jeffries Matusita-Spectral Angle Mapper (JMSAM), который измеряет сходство между двумя спектрами путем объединения измерений расстояния Jeffries Matusita (JM) и SAM.
'ns3'
- Метод нормированной оценки спектрального подобия (NS3), который измеряет подобие между двумя спектрами путем объединения измерений расстояния Евклида и SAM.
Для получения дополнительной информации об этих методах спектрального согласования, см. More About.
Типы данных: char
| string
'MinBandWidth'
- Минимальная полоса перекрытия300
(по умолчанию) | положительная скалярная величинаМинимальная полоса перекрытия, заданная как разделенная разделенными запятой парами, состоящая из 'MinBandWidth'
и положительная скалярная величина в нанометрах. Ширина полосы перекрытия между спектром ссылки и тестовыми спектрами определяется как:
BW перекрытия = W max − W min
W мин - это максимум минимальных длин волн в эталонном и тестовом спектрах .
W max является максимумом максимальных длин волн в эталонном и тестовом спектрах.
The 'MinBandWidth'
Аргумент определяет минимальное ожидаемое значение для полосы перекрытия между спектральными значениями тестового материала и спектральными данными ECOSTRESS.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
score
- счета расстоянияЗначения расстояния, возвращенные как 3-D числовой массив, матрица K вектор-столбец или скаляр. Размерности выходного счета зависят от размерностей libData
и являются ли тестовые данные hypercube
объект или wavelength
и reflectance
пара.
Если тестовые спектральные сигнатуры заданы как hypercube
объект, hcube
и кубик данных имеет размер M -by- N -by- C:
Размерность входного параметра, libData | Размерность выхода, score |
1-by - K, содержащая K ссылочные сигнатуры K считанные из количества файлов спектра | 3-D массив размера M -by- N -by- K, содержащий счет расстояния для каждого пикселя относительно K ссылочных сигнатур Значения в каждом канале K являются счетами расстояний спектров каждого пикселя относительно спектральных данных в соответствующей строке |
1 на 1, содержащая ссылочную сигнатуру, считанную из одного файла спектра (K = 1) | матрица размера M -by - N, Матрица содержит счет расстояния для спектров каждого пикселя относительно опорной сигнатуры. |
Если тестовая спектральная сигнатура задана как reflectance
и wavelength
значения:
Размерность входного параметра, libData | Размерность выхода, score |
1-by - K, содержащая K ссылочные сигнатуры K считанные из количества файлов спектра | K-элементный вектор, содержащий счет расстояния тестовых спектров относительно K эталонных сигнатур. Каждый элемент вектора является счетом расстояния тестовых значений отражающей способности относительно спектральных данных в соответствующей строке libData . |
1 на 1, содержащая ссылочную сигнатуру, считанную из одного файла спектра (K = 1) | скаляр |
Типы данных: double
Учитывая t тестовых спектров и r эталонных спектров длины C, α счета SAM вычисляется как
Метод спектрального информационного расхождения (SID) вычисляет спектральное подобие на основе расхождения между распределениями вероятностей двух спектров. Позвольте r и t быть ссылкой и тестовым спектрами соответственно. Вычислите значения распределения для ссылки спектров как:
.
Вычислите значения распределения для тестовых спектров как:
.
Затем вычислите значение SID с помощью распределений вероятностей опорного и тестового спектров:
Метод SID-SAM вычисляет спектральное сходство как:
Метод JMSAM вычисляет спектральное сходство на основе расстояний Jeffris Matusita (JM) и SAM между двумя спектрами. Позвольте r и t быть ссылкой и тестовым спектрами соответственно.
Сначала вычислите расстояние JM,
где B - расстояние Бхаттачарьи,
μr и μt являются средними значениями эталонного и тестового спектров соответственно. σr и σt являются ковариацией значениями ссылки и тестового спектров соответственно.
Затем вычислите значение SAM α используя t тестовых спектров и r эталонных спектров длины C,
Наконец, вычислите счет JMSAM как:
Метод NS3 вычисляет спектральное сходство на основе расстояний Евклида и SAM между двумя спектрами. Позвольте r и t быть ссылкой и тестовым спектрами соответственно. Вычислите евклидово расстояние между двумя спектрами как:
Затем вычислите значение SAM α
Наконец, вычислите счет NS3 как:
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.