3 (x, y) 좌표로 정의 된 삼각형 집합이 있습니다. x 축은 0에서 2까지이고 y 축은 같은 크기 (단위는 인치)입니다.삼각형 집합에서 비트 맵 만들기 : Matlab
각 삼각형에는 RGB 값이 지정됩니다.
각 삼각형을 서로 겹쳐서 렌더링하고 (순서는 중요하지 않음) 400 x 400 픽셀 크기의 비트 맵 이미지를 하나 만들고 싶습니다 (내 x와 y는 2 인치 길이이고 인치당 200 픽셀) .
내 방법은 아래에 나와 있지만, 내 솔루션 방법으로 독자의 의견을 색칠하지 않기를 바랍니다. 중요한 것은 문제입니다.
내 방법 : matlab의 fill() 함수를 사용하여 각 삼각형에서 패치 객체를 만들어 플롯했습니다. 그런 다음 getframe()을 사용하여 matlab 그림에서 비트 맵을 만듭니다. 문제는 내 그림 주위에 흰색 여백이 생기고 크기는 420 x 560 픽셀입니다. 내 코드는 다음과 같습니다.
fill() 및 getframe() 만 사용하여이 문제를 해결할 수있는 경우 실수를 지적하십시오. getframe()을 사용하지 않고 문제를 해결할 수있는 방법이 있기를 바라고 있습니다. 감사.
P. 내 앞의 질문 당신은 getframe
기능 당신이 원하는 자르기 사각형을 나타내는 제 2 인수를 줄 수 getframe() Create a bitmap from patch object in Matlab
N = 5;
Tri = 100;
res = 200; %200 pixles per inch
G = zeros(Tri,9,N);
X = 2*rand(Tri,3,N);
Y = 2*rand(Tri,3,N);
R = randi([0 255],Tri,N)/255;
G = randi([0 255],Tri,N)/255;
B = randi([0 255],Tri,N)/255;
for c1=1:N
G(:,1:3,c1)= X(:,:,c1);
G(:,4:6,c1)= Y(:,:,c1);
G(:,7,c1)= R(:,c1);
G(:,8,c1)= G(:,c1);
G(:,9,c1)= B(:,c1);
end
for c2=1:N;
h = figure('Visible','off');
for c3 =1:Tri
h1 = fill(G(c3,1:3,c2), G(c3,4:6,c2), [G(c3,7,c2) G(c3,8,c2) G(c3,9,c2)]);
set(h1,'EdgeColor','None');
hold on;
end
set(gcf, 'PaperUnits', 'inches', 'PaperPosition', [0 0 400 400]/res, 'visible','off');
set(gca,'visible','off');
F = getframe(h);
[a, b] = frame2im(F);
end
내가 생각하는 한 가지 옵션입니다.하지만 나는 그 함수를 전혀 사용할 필요가 없으며 대신 그림을 그려 내지 않고 삼각형을 비트 맵으로 렌더링 할 것이라고 생각했습니다. 나는 내 대답으로 의견을 색칠하고 싶지 않다. 감사. – user3761729