В этом примере показано, как создать версию полуразрешения изображения TIFF, на которое геоссылаются, с помощью объектов привязки, и Image Processing Toolbox™ функционирует ind2gray и imresize.
Считайте изображение TIFF индексированного цвета и преобразуйте его в шкалу полутонов. Размер изображения 2000 2000.
[X, cmap] = imread('concord_ortho_w.tif');
I_orig = ind2gray(X, cmap);Считайте соответствующий файл привязки. Каждый пиксель изображения покрывает однометровый квадрат на карте.
R_orig = worldfileread('concord_ortho_w.tfw','planar',size(X));
Выберите удобный формат для того, чтобы отобразить результат.
currentFormat = get(0,'format'); format short g R_orig
R_orig =
MapCellsReference with properties:
XWorldLimits: [207000 209000]
YWorldLimits: [911000 913000]
RasterSize: [2000 2000]
RasterInterpretation: 'cells'
ColumnsStartFrom: 'north'
RowsStartFrom: 'west'
CellExtentInWorldX: 1
CellExtentInWorldY: 1
RasterExtentInWorldX: 2000
RasterExtentInWorldY: 2000
XIntrinsicLimits: [0.5 2000.5]
YIntrinsicLimits: [0.5 2000.5]
TransformationType: 'rectilinear'
CoordinateSystemType: 'planar'
Разделите на два разрешение, создав меньшее изображение (1000 на 1000).
I_half = imresize(I_orig, size(I_orig)/2, 'bicubic');Измененное изображение имеет те же пределы как оригинал, только меньший размер, так скопируйте объект привязки и сбросьте его RasterSize свойство.
R_half = R_orig; R_half.RasterSize = size(I_half)
R_half =
MapCellsReference with properties:
XWorldLimits: [207000 209000]
YWorldLimits: [911000 913000]
RasterSize: [1000 1000]
RasterInterpretation: 'cells'
ColumnsStartFrom: 'north'
RowsStartFrom: 'west'
CellExtentInWorldX: 2
CellExtentInWorldY: 2
RasterExtentInWorldX: 2000
RasterExtentInWorldY: 2000
XIntrinsicLimits: [0.5 1000.5]
YIntrinsicLimits: [0.5 1000.5]
TransformationType: 'rectilinear'
CoordinateSystemType: 'planar'
Отобразите каждое изображение в координатах карты и отметьте контрольную точку красным + в обеих фигурах.
xlimits = [208000 208250]; ylimits = [911800 911950]; x = 208202.21; y = 911862.70; figure mapshow(I_orig,R_orig) hold on plot(x,y,'r+') xlim(xlimits) ylim(ylimits) ax = gca; ax.TickDir = 'out';

figure mapshow(I_half,R_half) hold on plot(x,y,'r+') xlim(xlimits) ylim(ylimits) ax = gca; ax.TickDir = 'out';

Графически, они совпадают, даже при том, что то же местоположение карты соответствует двум другим местам во внутренних координатах.
[xIntrinsic1, yIntrinsic1] = worldToIntrinsic(R_orig, x, y)
xIntrinsic1 =
1202.7
yIntrinsic1 =
1137.8
[xIntrinsic2, yIntrinsic2] = worldToIntrinsic(R_half, x, y)
xIntrinsic2 =
601.6
yIntrinsic2 =
569.15
format(currentFormat);
concord_ortho_w.tif и concord_ortho_w.tfw файлы выведены с помощью ортофото мозаик из Бюро Географической информации (MassGIS), Массачусетс, Исполнительного Office Технологии и Служб безопасности. Для получения дополнительной информации о наборах данных, используйте команду type concord_ortho.txt. Для обновленной ссылки на данные, обеспеченные MassGIS, см. https://www.mass.gov/service-details/massgis-data-layers.
MapCellsReference | imread | imresize | worldToIntrinsic | worldfileread