博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《OpenCV图像处理》——2.5 算术运算
阅读量:6413 次
发布时间:2019-06-23

本文共 938 字,大约阅读时间需要 3 分钟。

本节书摘来自华章计算机《OpenCV图像处理》一书中的第2章,第2.5节,作者:[西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno García)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.5 算术运算

算术运算是重载运算。这就意味着可以在Mat图像上执行和下面这个例子一样的运算:

screenshot

在OpenCV中,一种运算的结果值受到饱和运算(saturation arithmetic)的影响。这就意味着最终的值实际上是在0~255范围内最近似的一个整数。

当用掩码进行运算时,位运算bitwise_and()、bitwise_or()、bitwise_xor()和bitwise_not()非常有用。掩码是二值图像,表示这样一些像素(而不是整幅图像)在其上仅执行一种运算。下面的bitwise_and示例向您展示如何使用AND运算剪裁一幅图像的一部分:

screenshot

screenshot

在读取并显示输入图像之后,通过绘制一个全白色的圆可创建一个掩码。AND运算会用到这个掩码。该逻辑运算只对掩码值非零的那些像素进行,其余像素不会受到影响。最后,在本示例中用白色填充生成图像的外部(即圆的外部)。在进行该运算时,使用了之前介绍过的一种像素访问方法。由此产生的图像见图2-2:

screenshot

接下来,给出另一个很棒的示例,估计Pi的值。如图2-3所示,让我们考虑一个正方形及其内接圆:

screenshot

我们假设有一个未知边长的正方形图像和一个内接圆。可以通过在图像内的随机位置绘制许多像素并计算位于内接圆中的像素个数来估计内接圆的面积。另一方面,估计正方形的面积为绘制的像素总数。这样使用上面的公式就可以估计出Pi的值。

下面的算法模拟了这个过程:
(1)在一个黑色的正方形图像上,画一个纯白色的内接圆;
(2)在另一个黑色的正方形图像上(和上面的正方形大小相同),随机绘制大量像素;
(3)在两幅图像之间进行一个AND运算,并计算所产生的图像中的非零像素个数;
(4)使用公式估计Pi。
估计Pi值示例的代码如下:
screenshot
screenshot
screenshot

该程序完全遵循上面的算法。注意,使用函数countNonZero计算非零(在该示例中是白色)像素。对于npixels=8000,其估计值为3.125。npixels的值越大,估计结果也就越好,如图2-4所示。

screenshot

转载地址:http://trkra.baihongyu.com/

你可能感兴趣的文章
移动平台3G手机网站前端开发布局技巧汇总(转)
查看>>
多种方法实现div两列等高(收集整理)
查看>>
企业应用架构模式阅读笔记 - Martin Fowler
查看>>
PostgreSQL缓存
查看>>
iOS开发技巧 - 使用和定制开关控件(UISwitch)
查看>>
音乐闹钟
查看>>
JQuery模板插件jquery.tmpl-动态ajax扩展
查看>>
QT小滑块
查看>>
iis7.5 发布mvc出错的解决办法
查看>>
职称英语
查看>>
用JavaScript生成Android SDK的下载地址(4)——按“API Level”分类
查看>>
SQL Server 自动增长清零
查看>>
多核与云计算
查看>>
C++中的头文件和源文件
查看>>
SQLite在Android中使用
查看>>
Spring 3 MVC And RSS Feed Example
查看>>
【转】Linux 下修改Tomcat使用的JVM内存大小
查看>>
【uTenux实验】事件标志
查看>>
利用Python进行数据分析(15) pandas基础: 字符串操作
查看>>
busybox inetd tftpd
查看>>