Чтобы назначить значение пикселя нецелой координате в изображении в MATLAB
Салам У меня возникла проблема с присвоением значения в MATLAB. у меня есть изображение 5x5, я хочу увеличить его размер на 2, используя поверхностное приближение в триангуляции Делоне. Я использовал двумерный многочлен для интерполяции, для каждого треугольника вычисляются 9 констант, теперь я должен определить новую сетку и найти местоположение точки сетки затем в триангуляции используйте эти константы для вычисления значения пикселя по новым координатам, но значения пикселей, рассчитанные для нецелых координат, не могут быть назначены новому изображению
for R=2 and N1 and N2=5
%defining new grid
[X,Y] = meshgrid(1:1/R:N2,1:1/R:N1);
for triNum = 6 %i select a triangle
pts = r(tri(triNum,:),:); %gives the three vertices of triangle (x,y,z) of each
IN = inpolygon(X,Y,pts(:,1),pts(:,2)); % NxM%checks which point of X,Y are in that %triangle
HRtriangles(ind2sub(size(IN),find(IN==1))) = triNum; %assign the triangle number to a %new matrix, %hr triangls gives the HRgrid the num of triangle each grid point is
points=[X(ind2sub(size(IN),find(IN==1))),Y(ind2sub(size(IN),find(IN==1)))] %find value Tof coordinates which ar in that triangle
HRptC = c(HRtriangles(ind2sub(size(IN),find(IN==1))),: ); % a little error here because out of %32 triangles having 9 c values each i have to find the triangle containing points
% HRimage(points(:,1),points(:,2)) = sum(HRptC.*[1,points(:,1),points(:,2),points(:,1)^2,points(:,2)^2,points(:,1)^3,(x^2)*points(:,2),points(:,1)*(points(:,2)^2),points(:,2)^3]);
%main error here because HRimage is the image i have to form but for example for point %(1.5,1) i want to assign pixel value but due to non integer value of coordinate it cannot %be assigned
end
1 ответ
То, что я сделал, это то, что я умножил всю свою сетку на 2. Поскольку у меня была сетка с 1:0,5:5, так что нецелые точки сетки получили целое число, я присвоил им соответствующее значение, как первую строку всех столбцов и первый столбец из всех строк получить ноль, используя это, поэтому я использовал эти командные строки, чтобы удалить эту лишнюю нулевую строку и столбец
для моей матрицы S
S (~ любой (S,2),:) = []; % строк S(:, ~any(S,1)) = []; % колонны