2016-01-21 6 views
0

Я новичок в Matlab и имитирую физические явления, требующие физических координат моего изображения. Например, я могу использовать следующее, чтобы указать размеры моего изображения.Использование meshgrid для интерполяции физических координат изображения

a = phantom(80,250) 
a(81:250,:) = []; 

Для моей физической системы, мне нужно расстояние, чтобы быть 2 между каждым пикселем и объект, чтобы перейти от 0: 2: 280 в х и 0: 2: 410 у. Я пытаюсь использовать meshgrid, чтобы увидеть, если это поможет делу, начиная с

[x,y] = meshgrid(1:1:100, 1:1:300); 
[xm,ym] = meshgrid(1:.5:300, 1:.5:450); 

M = interp2(x,y,a,xm,ym,'nearest'); 

Это не дает мне то, что я хочу, но как я думаю, что потенциально может достичь решения.

Основная проблема заключается в том, что у меня есть изображение размером (80,250), и мне нужно пробовать/масштабировать его, чтобы я мог сопоставить точку в правом верхнем углу (280 мм, 410 мм) с образцом 2 мм между каждый пиксель. Это правильный подход или я должен использовать другую функцию?

ответ

2

Прежде всего, изображение не 80 x 250. Обязательно зайдите на страницу documentation.

Что именно вы надеетесь сделать после этого шага? Это действительно определяет, подходит ли это для этого.

Но на основе кода и последнего заявления, вы хотите диапазон х будет 0 - 280 и диапазон у быть 0 - 410.

xrange = linspace(0, 280, size(a, 2)); 
yrange = linspace(0, 410, size(a, 1)); 

Так что теперь ваша ссылка координаты вашего изображения будет be

[xx,yy] = meshgrid(xrange, yrange); 

Теперь, как вы хотите попробовать, это действительно зависит от вас. Похоже, вы хотите каждые 2 мм? Итак, давайте построим сетку для выборки.

[xq, yq] = meshgrid(0:2:max(xx(:)), 0:2:max(yy(:))); 

Теперь мы можем сделать нашу интерполяцию. Важно помнить, что опорные координаты (x и y) должны быть того же размера, что и исходное изображение (a). Это была одна из проблем с вашей первоначальной попыткой.

M = interp2(x,y,a,xq,yq,'nearest'); 
+0

то, что я надеюсь сделать, в основном использует значения изображения в этой конкретной координате. Например, изображение может иметь значение 1 at (280, 410), но изображение в Matlab имеет его так, что (80,250) имеет значение 1. Однако координата (79,250) = 0 на изображении и что это соответствуют «реальным» измерениям. В основном преобразование координат рода. – curiousgeorge

+0

@curiousgeorge yea, поэтому в приведенных выше решениях вы можете изменить xq и yq в любую точку, которую хотите запросить, и это должно работать нормально. – Suever

Смежные вопросы