现在我有一个白色背景黑色人像轮廓的二值bmp图像(仅有黑白两色)
采用按象素逐点描绘的方法获取抽样点
具体来说是这样的,比如当前点是(x,y)那么此点的八邻域的八个点坐标为(x-1,y-1);(x,y-1);(x+1,y-1);
(x-1,y);(x+1,y);(x-1,y+1);(x,y+1);(x+1,y+1)
我采用的方法就是如果当前点为黑色,那么就将此点周围的八个点全都变成白色,这样就达到了将人体轮廓转化成点图的目的;现在想达到的目标是可以让用户自己选择人体轮廓抽样后还剩下多少个点,我的思路是通过计算整个轮廓的黑色点数目,然后除用户定义的点数,计算出抽样圈数;这样就可以通过将黑色点周围的八个点定义为第一圈,这八个点外面的十六个点为第二圈,以此类推,之外的二十四个点为第三圈......那么我一圈一圈的赋点为白色就可以了,当然这种方法比较笨,不过这是我目前想到的第一个方法:)各位高手,我的情况如上,我的问题是:
1,如何设计一个给圈数赋值的函数?这个函数需要有圈数本身这个参数。
2,可否用递归方法来解决问题?描述是很容易的
1)如果圈数大于1,那么给当前最大圈赋白色,同时圈数减1;
2)如果圈数为1,那么只给当前点周围的8个点,也就是第一圈赋白色;
3,关于这个算法,肯定有优化的方法,请大家给出想法,多谢!
4,关于人体轮廓均匀抽样点的问题,我的这个算法应该比较笨,博诸位一笑而已,请各位有更好方法的指点 一二,多谢!给出100分好了,我的分数有限,无法给出太高的分数了,因为这个帖子问的问题比较多,所以也不好给太少的分数,希望各位海涵!
采用按象素逐点描绘的方法获取抽样点
具体来说是这样的,比如当前点是(x,y)那么此点的八邻域的八个点坐标为(x-1,y-1);(x,y-1);(x+1,y-1);
(x-1,y);(x+1,y);(x-1,y+1);(x,y+1);(x+1,y+1)
我采用的方法就是如果当前点为黑色,那么就将此点周围的八个点全都变成白色,这样就达到了将人体轮廓转化成点图的目的;现在想达到的目标是可以让用户自己选择人体轮廓抽样后还剩下多少个点,我的思路是通过计算整个轮廓的黑色点数目,然后除用户定义的点数,计算出抽样圈数;这样就可以通过将黑色点周围的八个点定义为第一圈,这八个点外面的十六个点为第二圈,以此类推,之外的二十四个点为第三圈......那么我一圈一圈的赋点为白色就可以了,当然这种方法比较笨,不过这是我目前想到的第一个方法:)各位高手,我的情况如上,我的问题是:
1,如何设计一个给圈数赋值的函数?这个函数需要有圈数本身这个参数。
2,可否用递归方法来解决问题?描述是很容易的
1)如果圈数大于1,那么给当前最大圈赋白色,同时圈数减1;
2)如果圈数为1,那么只给当前点周围的8个点,也就是第一圈赋白色;
3,关于这个算法,肯定有优化的方法,请大家给出想法,多谢!
4,关于人体轮廓均匀抽样点的问题,我的这个算法应该比较笨,博诸位一笑而已,请各位有更好方法的指点 一二,多谢!给出100分好了,我的分数有限,无法给出太高的分数了,因为这个帖子问的问题比较多,所以也不好给太少的分数,希望各位海涵!
解决方案 »
- WMI复制文件TO 远程失败?
- “网络游戏防沉迷系统”开发遇到难题————这是我的毕业设计
- 散分
- 关于Visual Studio .NET Add-in
- 大虾救命,100分!
- See here(about FindFirstPrinterChangeNotifition function)
- 菜了,菜得我无地自容。VC.net在哪里加入.lib?
- 请用过STLport的进来看看,我测试的和VC自带的STL性能一样啊?
- 我想vc的Output窗口按键的时候,会发出咚咚的声音,这个是用了啥函数才发出咚咚的声音?
- 鼠标一移动到边上!对话筐就弹出来!这种效果是怎样做出来的呀
- 关于Windows系统的一个小问题
- 高手进!!!!!多线程问题,启动/关闭一个无退出过程的线程有什么好的办法吗?在线...
{
for(j=x-n;j<=x+n;j++)
{
if(i!=y && j!=x)
image[i][j]=0xff;//变白色.
}
}
btw,dot line 是什么东西?
strict line
dash line
dot line
dash dot line
dash dot dot line
这么多吗???
for(i=y-n;i<=y+n;i++)
{
for(j=x-n;j<=x+n;j++)
{
if(i!=y || j!=x)
image[i][j]=0xff;//变白色.
}
}