Jaj*_*aja 4 rgb image-processing hsv
我必须在含有另一种血细胞的图像中检测白细胞,但可以通过细胞的颜色来区分,白细胞有更浓密的紫色,可以在下图中看到.
我使用RGB/HSV的颜色方法是什么?为什么?!
样本图片:

and*_*rew 13
通常在做出这样的决定时,我只需快速绘制不同的通道和颜色空间,看看我发现了什么.从高质量的图像开始总是比从低图像开始更好并尝试通过大量处理来修复它
在这个特定的情况下,我会使用HSV.但与大多数颜色分割不同,我实际上会使用饱和通道来分割图像.细胞几乎是相同的Hue,因此使用色调通道将非常困难.
色调(完全饱和和全亮度)非常难以区分细胞

饱和度巨大的对比

绿色通道,实际上也显示了很多对比度(让我感到惊讶)

红色和蓝色通道很难真正区分细胞.
现在我们有两个候选表示饱和度或绿色通道,我们问哪个更容易使用?由于任何HSV工作都涉及我们转换RGB图像,我们可以忽略它,因此明确的选择是简单地使用RGB图像的绿色通道进行分割.
编辑
既然你没有包含语言标签,我想附上我刚写的一些Matlab代码.它在所有4个颜色空间中显示图像,因此您可以快速做出明智的决定.它模仿matlabs Color Thresholder颜色空间选择窗口
function ViewColorSpaces(rgb_image)
% ViewColorSpaces(rgb_image)
% displays an RGB image in 4 different color spaces. RGB, HSV, YCbCr,CIELab
% each of the 3 channels are shown for each colorspace
% the display mimcs the New matlab color thresholder window
% http://www.mathworks.com/help/images/image-segmentation-using-the-color-thesholder-app.html
hsvim = rgb2hsv(rgb_image);
yuvim = rgb2ycbcr(rgb_image);
%cielab colorspace
cform = makecform('srgb2lab');
cieim = applycform(rgb_image,cform);
figure();
%rgb
subplot(3,4,1);imshow(rgb_image(:,:,1));title(sprintf('RGB Space\n\nred'))
subplot(3,4,5);imshow(rgb_image(:,:,2));title('green')
subplot(3,4,9);imshow(rgb_image(:,:,3));title('blue')
%hsv
subplot(3,4,2);imshow(hsvim(:,:,1));title(sprintf('HSV Space\n\nhue'))
subplot(3,4,6);imshow(hsvim(:,:,2));title('saturation')
subplot(3,4,10);imshow(hsvim(:,:,3));title('brightness')
%ycbcr / yuv
subplot(3,4,3);imshow(yuvim(:,:,1));title(sprintf('YCbCr Space\n\nLuminance'))
subplot(3,4,7);imshow(yuvim(:,:,2));title('blue difference')
subplot(3,4,11);imshow(yuvim(:,:,3));title('red difference')
%CIElab
subplot(3,4,4);imshow(cieim(:,:,1));title(sprintf('CIELab Space\n\nLightness'))
subplot(3,4,8);imshow(cieim(:,:,2));title('green red')
subplot(3,4,12);imshow(cieim(:,:,3));title('yellow blue')
end
Run Code Online (Sandbox Code Playgroud)
你可以这样称呼它
rgbim = imread('http://i.stack.imgur.com/gd62B.jpg');
ViewColorSpaces(rgbim)
Run Code Online (Sandbox Code Playgroud)
而显示就是这个
