2012-04-18 6 views
6

matlab에서 이미지를 가져 왔고 표시하기 전에 어떻게 이미지의 배경을 투명하게 만들 수 있습니까? 예를 들어, 흰색 배경에 빨간 공이 있는데 빨간 공만 보이고 흰색 픽셀이 투명하도록 이미지의 흰색 픽셀을 투명하게 만들려면 어떻게해야합니까?Matlab에서 픽셀을 투명하게 만들기

답변

15

이미지가 'png'형식으로 저장되었는지 확인해야합니다. 그런 다음 각 픽셀의 투명도를 개별적으로 지정하는 행렬 인 png 파일 'Alpha' parameter을 사용할 수 있습니다. 이것은 본질적으로 픽셀이 투명하면 부울 행렬이고, 그렇지 않으면 0입니다. 투명하게 만들려는 색상이 항상 같은 값 (예 : uint8의 경우 255) 인 경우 for 루프를 사용하면 쉽게 수행 할 수 있습니다. 항상 같은 값이 아닌 경우 임계 값 또는 값의 범위를 정의 할 수 있습니다. 여기서 픽셀은 투명합니다.

업데이트 :

우선 화상을 반복하여 화소가 흰색마다 (만약 투명 백색 설정 가정)에 의해 알파 매트릭스를 생성, 1

같이 픽셀의 알파 매트릭스 세트
# X is your image 
[M,N] = size(X); 
# Assign A as zero 
A = zeros(M,N); 
# Iterate through X, to assign A 
for i=1:M 
    for j=1:N 
     if(X(i,j) == 255) # Assuming uint8, 255 would be white 
     A(i,j) = 1;  # Assign 1 to transparent color(white) 
     end 
    end 
end 

이어서

imwrite(X,'your_image.png','Alpha',A); 
+0

Thanks @ ademing2. 간단한 예가 있습니까? – omegaFlame

+0

예제를 사용하여 원래의 답변을 편집했습니다. –

+0

감사합니다. 그러나 이미지 출력은 1x1 및 87 바이트입니다. 어떤 아이디어? – omegaFlame

10

".png를"로 이미지를 저장하기 위해 새롭게 생성 알파 행렬 (A)을 사용하여 MATLAB에서 루프에 대한 참고 사항은 느리기 때문에 모든 비용을 피해야합니다. 루프를 제거하는 코드를 다시 작성하는 것은 일반적으로 "벡터화"코드라고합니다. ademing2의 대답의 경우 다음과 같이 수행 할 수 있습니다.

A = zeros(size(X)); 
A(X == 255) = 1; 
관련 문제