我正在处理类似于以下的图像:a cell image,并且我只想提取红粉色部分。截至目前,我使用img(:,:,1)
来提取红色值,但这会产生一个二进制图像。我想知道是否有办法提取“红色”值并根据其“红色”或强度程度生成灰度图像。任何帮助都是极好的。基于一个颜色通道的强度将RGB图像转换为灰度
回答
您很可能使用imshow
显示结果,它会自动将轴的颜色限制设置在0
和1
之间。您的图像是RGB,红色通道的值将从0
到255
。因此,如果您只指定一个输入到imshow
,您将得到一个图像,其中所有值>1
将显示为白色,并且所有零值均为黑色。所以你的图像并不是真正的二进制,它只是出现那种方式。
你想要么imagesc
显示您的图片,它会自动缩放颜色范围来匹配数据:
imagesc(img(:,:,1));
colormap gray
或者,您可以指定第二个输入imshow
以使其也扩展到适合你的数据范围:
imshow(img(:,:,1), [])
的原因,这是不是当你所有的可视化频道的问题是,如果你指定的红色,绿色和蓝色通道,这被认为是真彩色图像,所有轴色丽米特被忽略。
您捕获的数据将是正确的(并且是灰度),但可视化可能不正确。当试图想象一个二维矩阵(与你的结果img(:,:,1)
),MATLAB应用默认颜色映射,其结果是:
[x,y]=meshgrid(1:200, 1:200);
z=x.^2.*sin(y/max(y(:))*pi);
figure;imagesc(z);
如果你想避免应用jet
颜色表,要么改变颜色表:
colormap('gray')
或更改2D矩阵成3D一个,明确地指定的颜色显示(必须是与0之间的值1):
z3d = z(:,:,[1 1 1]); % more efficient than repmat
z3d = (z3d - min(z(:)))./range(z(:)); % make sure values in range [0; 1]
你看到条带在颜色表的版本,因为默认情况下一个颜色表contains 64 different colors; 3D矩阵版本没有这个问题,因为它直接显示颜色。
如果我可以添加到您的问题,在我看来,你只是试图分离(或组合)分离和可视化的红色,绿色和蓝色fluorofores。我特别认为这是因为你提到'粉红'。
这可能是更好的只是隔离通道:
>> F_red = F; F_red(:,:,[2,3]) = 0;
>> F_green = F; F_green(:,:,[1,3]) = 0;
>> F_blue = F; F_blue(:,:,[1,2]) = 0;
>> F_pink = F; F_pink(:,:,2) = 0;
这里有结果的次要情节:
此外,你应该知道,生产的“天真”的方式灰度图像不会保留人眼所感知的颜色的“亮度”,因为与“红色”和“蓝色”相同强度的“绿色”实际上将被视为由更亮的亮度为人类的眼睛,同样的“红色”比“蓝色”更亮。 Matlab提供了一个rgb2gray
函数,它将rgb图像转换为正确保持亮度的灰度图像。这与您的纯粹的红色,绿色和蓝色转换无关,但对于“粉红色至灰度”图像可能需要考虑一些问题。例如,比较下面的两张图片,您会看到细微的对比差异。
>> F_pinktogray_naive = mean(F(:,:,[1,3]), 3);
>> F_pinktogray_luminance = rgb2gray(F_pink);
两个次要情节:
在某种意义上,你可能更关心的左边(幼稚)之一,因为你不关心的粉红的转换一个灰色的“视觉”,但你更关心的是红色和蓝色的氟化物在灰度图像上的强度是“可比较的”(因为它们代表测量值而不是视觉场景)。但在将rgb图像转换为灰度图时需要牢记这一点。
对不起,为了澄清,底部图像是一个灰度图像,只是用'热'地图可视化,我认为结果比灰色地图更直观。此外,图像是用'imagesc'生成的,这意味着这些值被缩放(即最低为0,最高为1)。如果你不关心缩放比例(例如,imshow允许你指定这样的限制,或者你可以简单地将灰度通道复制到所有rgb通道,这样你就有一个灰色'rgb图像,因此imagesc不会缩放,但会将它们解释为rgb)。 –
- 1. 转换为灰度图像到RGB
- 2. 转换灰度图像为RGB
- 3. 手动将RGB RGB图像转换为灰度图
- 4. 将灰度图像转换为彩色
- 5. 如何将灰度图像转换为RGB图像?
- 6. 使用matplotlib将灰度图像转换为RGB热图像
- 7. 如何将颜色转换为openCV中的灰度图像?
- 8. 使用颜色矩阵仅使用蓝色通道将颜色位图转换为灰度图像
- 9. 转换RGB RasterBrick为灰度
- 10. 将图像转换为灰度图像
- 11. 将合并的RGB图像转换为灰度OPENCV ANDROID
- 12. 将灰度JPEG转换为RGB JPEG
- 13. 将灰度值转换为RGB表示?
- 14. Android将位图转换为灰度,但保留一种颜色
- 15. 在c中将灰度部分透明的图像转换为单一颜色#
- 16. 将图像转换为灰度
- 17. jQuery将图像转换为灰度?
- 18. 将简单图像转换为灰度
- 19. 将灰度图像转换为黑白
- 20. 将图像转换为灰度指针
- 21. RGB图像到热像图的灰度转换
- 22. 将RGB图像转换为灰度图像减少了java中的内存
- 23. 八度图像包无法将图像转换为灰度
- 24. 如何将在原始RGB图像的某个像素中赋予阈值的灰度图像转换为RGB?
- 25. 在vC++中使用opencv将rgb图像转换为灰度图像
- 26. 逐渐将UIImage的颜色从RGB更改为灰度
- 27. 将彩色bmp转换为灰度bmp?
- 28. 将图像从彩色转换为灰度
- 29. 在Codenameone中将彩色图像转换为灰度
- 30. 在python中将图像从彩色批量转换为灰度
它不应该产生一个二进制图像。你为什么认为它是二元的?尝试'imagesc(img(:,:1))' – Suever