Retrieving the lung pixels through matrix operations with images
    조회 수: 6 (최근 30일)
  
       이전 댓글 표시
    
    Sivaramakrishnan Rajaraman
 2018년 8월 10일
  
    
    
    
    
    댓글: Sivaramakrishnan Rajaraman
 2018년 8월 13일
            I have two images, an original CXR, and its corresponding lung mask. I would like to perform an operation with these two images, to generate only the lung ROI from the original CXR and make the rest of the background black. The resultant image should be in RGB as the original CXR and mask, and not grayscale or binary. I tried performing bitwise multiplications and X-OR operations but doesn't work. Can you suggest me the code to do this?


>>
댓글 수: 1
채택된 답변
  KALYAN ACHARJYA
      
      
 2018년 8월 10일
        
      편집: KALYAN ACHARJYA
      
      
 2018년 8월 11일
  
      %This can do without for loop also, recomemded to follow the without loop  
[rows colm]=size(rgb_image);
      for i=1:rows
          for j=1:colm
              if (mask(i,j)==0) %Mask should be binary Image, if not convert it.
                  rgb_image(i,j,1)=0;
                  rgb_image(i,j,2)=0;
                  rgb_image(i,j,3)=0;
              end
          end 
      end 
      figure,imshow(rgb_image);
댓글 수: 9
  Image Analyst
      
      
 2018년 8월 11일
				Hmmmm. Not sure why. Here's a fully working example.
originalImage = imread('peppers.png');
subplot(2, 2, 1);
imshow(originalImage);
axis('on', 'image');
[rows, columns, numberOfColorChannels] = size(originalImage);
% Make mask
mask = false(rows, columns);
mask(100:300, 100:400) = true;
subplot(2, 2, 2);
imshow(mask);
axis('on', 'image');
maskedRgbImage = originalImage; % Initialize
% Mask the image using bsxfun() function to multiply the mask by each channel individually.
% Will work regardless if it's grayscale or color.
maskedRgbImage = bsxfun(@times, maskedRgbImage, cast(mask, 'like', maskedRgbImage));
subplot(2, 2, 3);
imshow(maskedRgbImage);
axis('on', 'image');

추가 답변 (1개)
  Image Analyst
      
      
 2018년 8월 10일
        
      편집: Image Analyst
      
      
 2018년 8월 10일
  
      This should work
maskedRgbImage = originalImage; % Initialize
% Convert to RGB, if needed.
[rows, columns, numberOfColorChannels] = size(maskedRgbImage);
if numberOfColorChannels == 1
    maskedImage = cat(3, maskedRgbImage, maskedRgbImage, maskedRgbImage);
end
% Mask the image using bsxfun() function to multiply the mask by each channel individually.
% Will work regardless if it's grayscale or color.
maskedRgbImage = bsxfun(@times, maskedRgbImage, cast(mask, 'like', maskedRgbImage));
댓글 수: 0
참고 항목
카테고리
				Help Center 및 File Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!