Итак, у вас есть координаты pxX
и pxY
в пикселях относительно изображения с низким разрешением. Вы можете преобразовать эти координаты в реальные координаты:
pxX_rw = pxX / 0.7757 - 164.424;
pxY_rw = pxY / 0.7757 - 194.462;
Далее вы можете преобразовать эти координаты в координаты высокого разрешения:
pxX_hr = (pxX_rw - 94.3052) * 2.8444;
pxY_hr = (pxY_rw - 110.923) * 2.8444;
Поскольку исходные координаты вписываются в изображение с низким разрешением, но изображение с высоким разрешением меньше (в физических координатах), чем изображение с низким разрешением, возможно, что эти новые координаты не помещаются в высоком разрешении образ. Если это так, то обрезка многоугольника является нетривиальным упражнением, это не может быть сделано простым перемещением вершин в поле зрения. MATLAB R2017b представляет тип объекта polyshape
, который вы можете intersect
:
bbox = polyshape([0 0 180 180] - 94.3052, [180 0 0 180] - 110.923);
poly = polyshape(pxX_rw, pxY_rw);
poly = intersect([poly bbox]);
pxX_rw = poly.Vertices(:,1);
pxY_rw = poly.Vertices(:,2);
Если у вас более ранняя версия MATLAB, возможно, самое простое решение - увеличить поле зрения, чтобы нарисовать многоугольник, а затем обрезать полученное изображение до нужного размера. Но для этого нужны правильные вычисления.