2009-10-14 2 views
2

로드 한 이미지에 삼각형을 그려야합니다. 삼각형은 다음과 같아야합니다 :어떻게하면 MATLAB의 이미지에 삼각형을 그릴 수 있습니까?

1 0 0 0 0 0 
1 1 0 0 0 0 
1 1 1 0 0 0 
1 1 1 1 0 0 
1 1 1 1 1 0 
1 1 1 1 1 1 

그러나 내가 가진 주된 문제는 어떻게 그런 행렬을 만들 수 있는지 모른다는 것입니다. 이 행렬에 이미지를 곱하고 이미지 행렬을 3 개의 매개 변수 (W, H, RGB)로 구성합니다.

당신은 TRILONES 기능을 사용하여 문제의 같은 매트릭스를 만들 수 있습니다

답변

9

:

>> A = tril(ones(6)) 

A = 

    1  0  0  0  0  0 
    1  1  0  0  0  0 
    1  1  1  0  0  0 
    1  1  1  1  0  0 
    1  1  1  1  1  0 
    1  1  1  1  1  1 

편집 : 아래에 귀하의 의견을 바탕으로, 당신 같은 소리이 3-D RGB를 이미지 행 BB의 각 색상면에 행렬 A을 곱한다고 가정합니다. 이것은 이미지의 상단 삼각형 부분 (모든 0에 해당)을 검정색으로 설정 한 실제 결과를 나타냅니다.

>> B = randi([0 255],[6 6 3],'uint8'); % A random uint8 matrix as an example 
>> B(repmat(~A,[1 1 3])) = 0;   % Set upper triangular part to 0 
>> B(:,:,1)        % Take a peek at the first plane 

ans = 

    8 0 0 0 0 0 
    143 251 0 0 0 0 
    225 40 123 0 0 0 
    171 219 30 74 0 0 
    48 165 150 157 149 0 
    94 96 57 67 27 5 
( B 매치 A들 중 행과 열 IE) 6에 의하여 -6- 별 3 행렬 B이다 가정 대신 여기 승산 한 인덱스를 사용하여 용액 (상기 함수 REPMAT) 인

REPMAT를 호출하면 A의 부정 버전이 3 번 복제되어 B과 같은 크기가됩니다. 결과는 Blogical index으로 사용되며 0이 아닌 인덱스는 0으로 설정됩니다. 곱하기 대신 인덱싱을 사용하면 AB을 동일한 데이터 형식으로 변환하는 것에 대해 걱정할 필요가 없습니다. 이 경우 곱셈은 Adouble이고 Buint8 유형입니다.

+1

하위 삼각 행렬 함수는 homerolled 솔루션을 능가합니다. –

+0

네, 맞습니다. +1 –

+0

감사합니다. 내 문제는 여기에이 행렬에 이미지가 포함 된 행렬을 곱하려고합니다. ::> 행렬에 3 개의 매개 변수 (W, H, RGB)로 구성된 이미지가 포함되어 있습니다. plz 시도하고 문제를 확인한 후 나를 돕습니다. 감사합니다. –