首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特殊ImageFilter

特殊ImageFilter
EN

Stack Overflow用户
提问于 2015-03-23 04:55:23
回答 2查看 80关注 0票数 0

请看附件中的图片。这是一个矩阵的一小部分产生在一个更大的16位图像读取。我想设计一个过滤器,这样所有的非零值都得到了我想要使用的最频繁的数字的值,它将选择模式(内核中最频繁的数字重叠),但是它不能工作在边缘的非零数,因为那样的模式是0。有什么想法吗?如果我能在Emgu简历库找到这样的过滤器,那就更好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-23 14:47:46

谢谢你的回应。我找到了一个很好的方法。

  1. 从原始图像对象'img‘中提取一个掩码m。掩码m告诉我们哪些像素是零,哪些是非零。
  2. 在emgu CV中,用imgNew = img.Dilate(1)扩展图像对象。膨胀函数通过扩展原始图像中与膨胀核重叠的最大值来扩展像素。在上述情况下,该值1056取代其他较小的值,如304、320、272等。这些值被进一步远离中心。
  3. 因为我们现在有更多的非零像素由于膨胀。可以通过命令imgNew ( imgNew.Ptr,mask.Ptr,imgNew.Ptr,1)将掩码m与掩码m相乘;
  4. 结果如下图所示

希望能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2015-03-23 07:15:16

我不认为这可以通过简单的过滤器来完成,相反,我会这样做:

  1. 计算直方图
代码语言:javascript
复制
- create and set to zero integer counter per each possible color
- loop through all pixels (x,y) and increment used color counter

int i,x,y,cnt65536;for (i=0;i<65536;i++) cnti=0;for(y.(x.)cnt[pixely]++;

  1. 选择最常见的非零颜色
代码语言:javascript
复制
- just find max number in `cnt[]` ignoring index 0
- found index `ix` is the color

  1. 用该颜色替换非零像素。
代码语言:javascript
复制
- just replace each zero pixel

(y.)(x.)如果(像素!=0) pixely=ix;

备注

  • 伪码在C++中
  • for(x/y...)更改为正确的图像边界
  • 更改pixel[y][x]以获得正确的图像像素访问
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29203516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档