2017-01-24 2 views
1

Matlab 함수 imtransform을 사용하여 등각 맵 (예 : https://www.flickr.com/photos/gbachelier/albums/72157677436918822)으로 RGB 이미지를 왜곡합니다.Matlab은 투명도로 변환합니다

이러한 이미지에는 'FillValues'로 채워진 빈 영역 (예 : 0 = 검은 색 이미지)이 포함될 수 있습니다. imtransform 후 모든 검은 픽셀을 투명하게 (Make a pixel transparent in Matlab) 전송하면 다른 지역에도 영향을 미칠 수 있으므로이 영역을 추가 합성 작업에 대한 투명도로 직접 채우고 싶습니다. 나머지 지역에 영향을주지 않고 해당 지역을 투명하게 만드는 방법에 대한 아이디어가 있습니까? 고마워요!

+0

왜 그 지역을 선택하고 투명이 문제가 될 치료하는 것? –

+0

@ Tasos Papastylianou : 당신이 "손으로 선택"을 의미하는 것이라면 문제가되지 않는다. 알고리즘 적 접근이 필요합니다. 왜냐하면 이것이 인구가 10^3 이상인 개체와의 진화 적 예술 과정의 일부이기 때문입니다. –

+0

수동으로 입력하지 않아도 해당 페이지의 모든 예제에는 검정색 픽셀이 중앙에 연결된 구성 요소가 포함됩니다.이 구성 요소는 아마도 투명하게 만들고 싶을 것입니다. 중앙 연결 구성 요소 (예 : 'bwconn' /'bwlabel'을 통해)를 선택하고 알고리즘을 통해 원하는 픽셀을 선택하십시오. –

답변

0

흰색의 이미지를 사용할 수 있으며 모든 값은 255이며 동일한 변환을 적용한 다음 결과를 마스크로 사용하여 투명하게 만듭니다.

수식을 사용하면 (주석에서 언급 했음) 두 개의 이미지를 구성 할 수 있습니다.

예 :

I1=double(imread('klXfF.jpg')); 
I2=double(imread('9cEgo.jpg')); 
G=double(imread('xHOtx.jpg'))/255; 
I3 = uint8(bsxfun(@times, 1-G, I1) + bsxfun(@times, G, I2)); 
%In MATLAB R2016b this notation can be used 
% I3 = uint8((1-G) .* I1 + G .* I2); 
imwrite(I3, "result.jpg"); 

I1I2

maskresult

+0

그래, Perlmagick에서 작업이라면 내가 선택할 전략이지만 Matlab에서는 그다지 경험이 없다. 그레이 마스크를 생성하려면 CopyOpacity와 함께 Composite의 기능을 Matlab에 포팅해야합니다. imtransform을 직접 채우는 것이 훨씬 쉬운 방법이지만 이것이 가능하지 않으면 Matlab에서 마스크와 합성을 조사해야합니다. –

+0

귀하의 제안을 따르고 회색 마스크 (에일리어싱 효과를 피하기 위해 가장자리를 부드럽게하기위한 약간의 흐림 후 처리 기능, 복사 불투명도와 같은 작성 작업에 최적화 됨)을 만들었습니다 : https://www.flickr.com/photos/gbachelier/32536660495/in-album-72157677436918822/Matlab에서 합성 작업을 실제로 수행하여 회색 영역을 불투명 한 흰색으로 부드럽게 전환하여 검정색 영역을 마스크하는 방법을 알려주십시오. 감사! –

+0

작곡이란 무엇입니까? 최소한의 예를 제공 할 수 있습니까? 예를 들어 10 * 20 이미지를 입력으로 사용하고 예상 출력을 – rahnema1