Идентифицируйте неизвестные области или материалы, пользующиеся спектральной библиотекой
идентифицирует область или материал путем соответствия с его спектральными значениями коэффициента отражения в виде score
= spectralMatch(libData
,reflectance
,wavelength
)reflectance
и wavelength
, со значениями, доступными в спектральной библиотеке libData
ECOSTRESS.
задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой комбинации входных параметров в предыдущих синтаксисах.score
= spectralMatch(___,Name,Value
)
Примечание
Эта функция требует Image Processing Toolbox™ Гиперспектральная Библиотека Обработки изображений. Можно установить Image Processing Toolbox Гиперспектральная Библиотека Обработки изображений из 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
объект. 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'
— Джеффрис Мэтузита-Спектрэл Энгл Мэппер (JMSAM), который измеряет подобие между двумя спектрами путем объединения Хеффрьеса Матуситы (JM) и мер по расстоянию SAM.
'ns3'
— Нормированный спектральный счет подобия (NS3) метод, который измеряет подобие между двумя спектрами путем объединения Евклидовых и мер по расстоянию SAM.
Для получения дополнительной информации об этих спектральных методах сопоставления, смотрите Больше О.
Типы данных: char |
string
'MinBandWidth'
— Минимальная пропускная способность перекрытия
(значение по умолчанию) | положительная скалярная величинаМинимальная пропускная способность перекрытия в виде разделенной запятой пары, состоящей из 'MinBandWidth'
и положительная скалярная величина в нанометрах. Пропускная способность перекрытия между ссылочным спектром и тестовыми спектрами задана как:
Перекрытие BW = W макс. − min W
Min W является максимумом минимальных длин волн в тестовых спектрах и ссылке.
W макс. является максимумом максимальных длин волн в тестовых спектрах и ссылке.
'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 K, содержа подписи ссылки K, считанные из количества K файлов спектра | 3-D числовой массив размера M-by-N-by-K содержащий оценки расстояния для каждого пикселя относительно подписей ссылки K Значения в каждом канале K являются множеством расстояния спектров каждого пикселя относительно спектральных данных в соответствующей строке |
1 на 1, содержа ссылочную подпись, считанную из одного файла спектра (K = 1) | матрица размера M-by-N, матрица содержит оценку расстояния для спектров каждого пикселя относительно ссылочной подписи. |
Если тест спектральная подпись задан как reflectance
и wavelength
значения:
Размерность входного параметра, libData | Размерность выхода, score |
1 K, содержа подписи ссылки K, считанные из количества K файлов спектра | K- вектор элемента содержание оценки расстояния тестовых спектров относительно подписей ссылки K. Каждым элементом вектора является счет расстояния тестовых значений коэффициента отражения относительно спектральных данных в соответствующей строке libData . |
1 на 1, содержа ссылочную подпись, считанную из одного файла спектра (K = 1) | скаляр |
Типы данных: double
Учитывая тестовые спектры t и ссылочные спектры r длины C, выигрывают SAM, α вычисляется как
Метод спектрального информационного расхождения (SID) вычисляет спектральное подобие на основе расхождения между вероятностными распределениями этих двух спектров. Позвольте r и t быть ссылкой и тестовыми спектрами соответственно. Вычислите значения распределения для ссылочных спектров как:
.
Вычислите значения распределения для тестовых спектров как:
.
Затем вычислите значение SID при помощи вероятностных распределений ссылки и тестовых спектров:
Метод SID-SAM вычисляет спектральное подобие как:
Метод JMSAM вычисляет спектральное подобие на основе Jeffries 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.