Идентификация неизвестных областей или материалов с помощью спектральной библиотеки
идентифицирует область или материал путем сопоставления значений спектрального отражения, указанных как score = spectralMatch(libData,reflectance,wavelength)reflectance и wavelength, со значениями, доступными в спектральной библиотеке ECOSTRESS libData.
указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах.score = spectralMatch(___,Name,Value)
Примечание
Для выполнения этой функции требуется библиотека гиперспектральных изображений Toolbox™ обработки изображений. Можно установить библиотеку гиперспектральных изображений панели инструментов обработки изображений из проводника надстроек. Дополнительные сведения об установке надстроек см. в разделе Получение надстроек и управление ими.
Способ спектрального согласования сравнивает спектральную сигнатуру каждого пикселя в гиперспектральном кубе данных с эталонной спектральной сигнатурой для растительности из файла спектра 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);
Загрузить a .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-by-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 объект. DataCube имущества hypercube содержит гиперспектральную базу данных.
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 расстояния.
Дополнительные сведения об этих методах спектрального согласования см. в разделе Подробнее.
Типы данных: char | string
'MinBandWidth' - Минимальная полоса пропускания перекрытия300 (по умолчанию) | положительный скалярМинимальная полоса пропускания перекрытия, указанная как пара, разделенная запятыми, состоящая из 'MinBandWidth' и положительный скаляр в нанометрах. Полоса пропускания перекрытия между опорным спектром и тестовым спектром определяется как:
BWoverlap = Wmax − Wmin
Wmin - это максимум минимальных длин волн в опорном и тестовом спектрах.
Wmax - максимум максимальных длин волн в опорном и тестовом спектрах.
'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-на-N содержит оценку расстояния для спектров каждого пикселя относительно опорной сигнатуры. |
Если тестовая спектральная сигнатура указана как reflectance и wavelength значения:
Размерность входного аргумента, libData | Размер выходных данных, score |
| 1-by-K, содержащий K эталонных подписей, считанных из K файлов спектра | Вектор K-элемента, содержащий оценку расстояния тестовых спектров относительно K опорных сигнатур. Каждый элемент вектора представляет собой оценку расстояния контрольных значений отражательной способности относительно спектральных данных в соответствующей строке libData. |
| 1 на 1, содержащий эталонную сигнатуру, считанную из одного файла спектра (K = 1) | скаляр |
Типы данных: double
Учитывая тестовые спектры t и эталонные спектры r длины C, оценка SAM α вычисляется как
∑i=1Ctiri∑i=1Cti2∑i=1Cri2).
Метод спектральной информационной дивергенции (SID) вычисляет спектральное сходство на основе дивергенции между распределениями вероятности двух спектров. Пусть r и t являются опорным и тестовым спектрами соответственно. Вычислите значения распределения для эталонных спектров как:
.
Рассчитайте значения распределения для тестовых спектров как:
.
Затем вычисляют значение SID, используя распределения вероятностей опорного и тестового спектров:
qipi).
Способ SID-SAM вычисляет спектральное сходство как:
(α)
Метод JMSAM вычисляет спектральное сходство на основе расстояний Джеффриса Матуситы (JM) и SAM между двумя спектрами. Пусть r и t являются опорным и тестовым спектрами соответственно.
Сначала вычислите расстояние JM,
e − B)
где B - расстояние Бхаттачарьи,
startt +
мкр и мкт - средние значения эталонного и тестового спектров соответственно. startr и startt - значения ковариации опорного и тестового спектров соответственно.
Затем вычисляют значение SAM α с использованием тестовых спектров t и эталонных спектров r длины C,
∑i=1Ctiri∑i=1Cti2∑i=1Cri2).
Наконец, вычислите оценку JMSAM как:
)
Метод NS3 вычисляет спектральное сходство на основе евклидова и SAM расстояний между двумя спектрами. Пусть r и t являются опорным и тестовым спектрами соответственно. Вычислите евклидово расстояние между двумя спектрами как:
ri) 2
Затем вычислите значение SAM α
∑i=1Ctiri∑i=1Cti2∑i=1Cri2).
Наконец, вычислите NS3 балл как:
(α)) 2
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.