求,给定模糊区域后小块的划分算法

red-fly 2012-09-05 05:42:07
一幅图片,其上会画出N个区域(每个区域要么是矩形,要么是椭圆形,为了简单,此贴只讨论矩形的情况),区域之间可能会重叠,画区域的目的是对这些区域内的图像进行模糊。
为了有好的模糊,允许指定模糊单元的大小,每个单元内的颜色进行平均,模糊单元允许对长和宽进行单独指定,比如10*10,就表示每个10*10的区域进行颜色平均。为了简单,所有区域的模糊单元大小都相同

____________________________
|````````````````````````````|
|```````` __________`````````|
|````````|``````````|````````|
|````````|``````````|````````|
|````````|__________|````````|
|````````````````````````````|
|````````````````````````````|
|____________________________|

比如以上内方框为要模糊的区域,这个区域可能被划分成Z个小的单元,当然在右面和下面,不一定刚好足够一个单元的大小,这个问题我只做了简单的处理,不在此贴讨论的范围内
如果只有这一个要模糊的区域就好办,如果还有一个区域,比如位于它的左下方或者右下方

____________________________
|````````````````````````````|
|`````````__________```````` |
|````````|``````````|````````|
|````____|````A`````|````````|
|```|````|__________|````````|
|```|```B`````|``````````````|
|```|_________|``````````````|
|____________________________|

如上,所示,这种情况下,如果模糊单元的划分不能恰好把A的顶部到B的顶部纵向划分,那如何检测到B区域右上角?还有如果连宽度也不够的话,如何进行模糊?
纵向,我现在的代码大致如下:


//
for ( ly = 0; ly < lVideoHeight - 2; ly += lBlurHeight )
{
bool bBlur = false;

// 对横向进行模糊搜索并模糊,如果有模糊,就置bBlur为true
...

// 如果没有模糊,则一次只加1个像素,即逐行循环
if ( !bBlur )
ly -= lBlurHeight - 1;
} // end for ( ly


以上代码会导致上面所说的,如果单元无法刚好把各边平分,就会导致部分需要被模糊的区域没有模糊,因为是一次性增加了单元的高度

现求算法,或者方法


专门用文字描述不太容易描述清楚,如果大家不清楚的话,我再看咋弄的更好一些
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengbingchun 2012-09-07
  • 打赏
  • 举报
回复
对剩下的在矩形内求取连通域,再对单个连通域内进行平均模糊
red-fly 2012-09-07
  • 打赏
  • 举报
回复
难道木有人对此有点儿研究?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧