2017-11-17 1 views
-1

matlab에 y * x 행렬이 있고 A와 같이 4 개 점 사이의 행렬 영역 중 어느 한 점에 값을 지정하고 싶습니다. , B, C, D 좌표를 알고있는 이미지, 포인트가 정렬되어 있다면 문제가되지 않지만 그렇지 않습니다.Matlab의 주어진 영역 내부의 행렬 요소에 값 지정

이 기능이 있습니까? 편집

Example of result I *이 1,280 720 영역은 다음과 같이 정의되는 0과 1 행렬의 크기 사이의 숫자의 입력 행렬되어있는이

X = 3 10 27 20 3]; y = [10 40 31 1 10];

픽셀이 제외되거나 사각형의 가장자리를 따라 포함되는 경우 중요하지 않지만 포함되어 있으면 더 좋습니다.

출력 매트릭스는 예를 들어, 입력 행렬하지만 다른 값으로 대체 관심 영역 내부의 점의 값과 동일해야한다 2.

I가 검색 한 용액은 매우 비슷 m7913d가 준 것.

+1

샘플 입력/s 및 출력 행렬을 –

+0

마스크를 제공 다각형을 마스크 된 행렬에 할당합니다. 적절한 질문을하면 답변을 드리겠습니다. 우선, 그 사각형의 가장자리를 따라 어떤 픽셀이 포함되는지 제외되는지 결정하는 방법을 결정해야합니다. 그건 내가 너에게 할 수있는 일이 아니다. –

답변

0

넌 마스크 다각형 변환하고 다음과 같이 logical indexing을 이용하여 행렬에서 원하는 요소를 변경 poly2mask을 사용할 수

% Create a sample matrix 
matrix = rand(50, 50); 

% Define your region as a polygon 
x = [3 10 27 20 3]; 
y = [10 40 31 1 10]; 

% Convert the polygon to a mask 
mask = poly2mask(x,y,size(matrix, 1),size(matrix, 2)); 

% Change the elements in matrix which are inside the polygon 
matrix(mask) = 123; 

% Display the result 
figure 
imshow(matrix, 'InitialMagnification', 'fit') 
hold on 
plot(x, y, 'r') 

enter image description here