如何在 Matlab 中匹配 2 个二值图像的手形?
How to match the hand shape of 2 binary images in Matlab?
我正在尝试制作手势鼠标,最后我成功地从 rgb 图像中提取了手的黑白形状。
现在我的问题是如何匹配手形?
我有这样一张图片:
像这样从相机中挑选的新的:
我试过 SURF 功能,但即使握紧手也找不到功能!
如果您知道人们的手会放在哪里,您可以简单地将像素值相加并将它们与阈值进行比较(或立即为每只手校准它们)。
让我们假设您的手部图像被加载到一个名为 handImage
的 2D 数组(3D 数组是一个简单的扩展)中
计算手闭合时所有像素的总和
handclosed = sum(handImage1(:));
计算手牌所有像素的总和
handopen = sum(handImage2(:));
假设张开的手在您的图像上有更多的白色,我们将假设 handopen
> handclosed
。因此,我们定义
handthreshold = (handopen + handclosed) / 2
;
最后,您将为所有后续图像取您手部图像的总和。如果此总和大于阈值,则假设手是打开的,否则假设它是关闭的。
我正在尝试制作手势鼠标,最后我成功地从 rgb 图像中提取了手的黑白形状。
现在我的问题是如何匹配手形?
我有这样一张图片:
像这样从相机中挑选的新的:
我试过 SURF 功能,但即使握紧手也找不到功能!
如果您知道人们的手会放在哪里,您可以简单地将像素值相加并将它们与阈值进行比较(或立即为每只手校准它们)。
让我们假设您的手部图像被加载到一个名为 handImage
计算手闭合时所有像素的总和
handclosed = sum(handImage1(:));
计算手牌所有像素的总和
handopen = sum(handImage2(:));
假设张开的手在您的图像上有更多的白色,我们将假设
handopen
>handclosed
。因此,我们定义handthreshold = (handopen + handclosed) / 2
;最后,您将为所有后续图像取您手部图像的总和。如果此总和大于阈值,则假设手是打开的,否则假设它是关闭的。