How to detect and separate pixels in an image
조회 수: 7 (최근 30일)
이전 댓글 표시
I want to take an image and detect pixels that are green, which I've accomplished. But I also want to keep their color and seprate them such that I can then take the rest of the image and convert it to greyscale. Here is the code I have currently that detects the green pixels:
function [ result ] = detectGreen( rgbimage )
%set the threshold of green in the hue channel
GREEN_THRESHOLD = [65,170]/360;
INTENSITY = .1;
%convert image to HSV color space
hsv = rgb2hsv(rgbimage);
%find pixels in the relevent area that are in the range in H and V channels
greenMask = hsv(:,:,1)>GREEN_THRESHOLD(1) & hsv(:,:,1)<GREEN_THRESHOLD(2) & hsv(:,:,3) > INTENSITY;
%return the green pixels
result = greenMask;
end
Currently, this takes the color image and processes it to be like the second image:
Is there a way that I can keep the green color of those detected pixels such that I can then convert the whole image to grey scale and overlay the detected white on top so that the only thing in color is the green of the field?
댓글 수: 0
채택된 답변
Subhadeep Koley
2021년 5월 6일
rgbImg = imread('image.png');
grayImg = rgb2gray(rgbImg);
greenMask = detectGreen(rgbImg);
figure
imshow(rgbImg);
hold on
han = imshow(grayImg);
hold off
set(han, 'AlphaData', ~greenMask);
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!