我正在使用提供人体深度图像的数据集,我需要从该图像中提取对象或至少在 Matlab 中去除图像中不属于人体的其他失真。
图像示例如下所示:
这是我使用时的输出
I = imread ('39.jpg');
human = sum(I,3)>10+10;
请问有什么办法吗?提前致谢
对于您显示的图像,一切都是灰度但有些东西是红色的,那么只需执行以下操作:
so=imread('https://i.stack.imgur.com/hZOQv.jpg');
human=sum(abs(diff(single(so),1,3)),3)>20;
这实质上是比较像素的 RGB 值的差异,并获得高于阈值的值。如果您有适当的 png,则阈值应该仅为 1,但是对于 jpg 伪影,您可能需要更高的值,因为此图像 20 可以完成这项工作。
结果图像中有一些微小的伪影,很可能是由于jpg
. 当你做科学时,你需要存储在png
. 如果您绝对没有其他选择jpg
,那么您可能有人工制品。