Создание полуразрешения изображение, на которое геоссылаются,

Этот пример показывает, как создать версию полуразрешения изображения TIFF, на которое геоссылаются, с помощью ссылочных объектов и функций Image Processing Toolbox™ ind2gray и imresize.

Шаг 1: импортируйте изображение TIFF, на которое геоссылаются,

Считайте изображение TIFF индексированного цвета и преобразуйте его в шкалу полутонов. Размер изображения 2000 2000.

[X, cmap] = imread('concord_ortho_w.tif');
I_orig = ind2gray(X, cmap);

Считайте соответствующий worldfile. Каждый пиксель изображения покрывает однометровый квадрат на карте.

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'


Шаг 2: измените размер изображения к половине его первоначального размера

Разделите на два разрешение, создав меньшее изображение (1000 на 1000).

I_half = imresize(I_orig, size(I_orig)/2, 'bicubic');

Шаг 3: создайте ссылочный объект для измененного изображения

Измененное изображение имеет те же пределы как оригинал, только меньший размер, так скопируйте ссылочный объект и сбросьте его свойство 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'


Шаг 4: визуализируйте результаты

Отобразите каждое изображение в координатах карты и отметьте контрольную точку красным + в обеих фигурах.

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 - выведенный от ортофото мозаик от:

Office of Geographic and Environmental Information (MassGIS),

Commonwealth of Massachusetts Executive Office of Environmental Affairs

http://www.state.ma.us/mgis

For more information, run:

>> type concord_ortho.txt

Смотрите также

| | | |