史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

查找表为二进制图像处理

今天我介绍一个简短的系列使用查找表在二进制图像来实现社区业务。这是一个快速的实现技术,适用于小型社区,通常2×2或3×3。

我的初步计划是这个算法做三篇文章主题:

1。解释的基本思想(今天)

2。显示一些示例使用图像处理工具箱的功能

3所示。解释一个算法优化我们最近放入工具箱。

让我们谈谈3 x3的二进制社区。这里有一个:

bw = [0 0 1;1 1 0;1 0 0)
bw = 0 0 1 1 1 0 1 0 0

这是另一个:

bw = [1 0 0;1 0 0;0 1 0]
bw = 1 0 0 1 0 0 0 1 0

好了,这可能会老的很快。

问题:有多少不同的3×3二进制社区?

每个像素在附近只能取两个值,还有9个像素在附近,所以答案是:

2 ^ 9
ans = 512

那不是很多不同的可能性,尽管它肯定会繁琐的手工都写出来!有一个简单的方法来生成它们吗?

我相信有很多合理的方法。所使用的一种方法,图像处理工具箱函数makelut,是使用9-bit从0到511的整数的二进制表示。

标签= 5;本= dec2bin(标签,9)
本= 000000101

是一个9-character字符串。逻辑比较和重塑把它变成一个二进制社区:

bw =重塑(本= =' 1 '、3、3)
bw = 0 0 1 0 0 0 0 0 1

只是重复的其他511个整数范围[0511]和你所有可能的3×3的社区。计算你的每一个操作的输出和结果保存在一个表。

然后使用这个过程来实现操作:

为每个输入像素:提取3 x3的左邻右舍计算相对应的表索引将该索引值的表插入到输出图像

计算表索引对应于给定的社区可以通过使用bin2dec。请注意,bin2dec接受一个字符串,所以我们必须先做一个小的工作将二进制附近一串“0”和“1”的角色。

str = repmat (' 0 '1、9);str (bw (:)) =' 1 ';bin2dec (str)
ans = 5

这是查找表的核心二进制图像邻域算法流程。

在我的下一篇文章关于这个主题,我将介绍图像处理工具箱的功能makelutapplylut和显示的例子说明其使用。




使用MATLAB®7.6发表

|
  • 打印

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。