2 个不稳定版本
0.2.0 | 2023年1月14日 |
---|---|
0.1.0 | 2021年5月1日 |
#543 在 图像
34KB
433 行
skeletonize
二值图像的线细化库,包括边缘检测和阈值函数用于将图像预处理成二值图像。
线细化的目标是去除图像中多余的像素,直到图像中的线变得只有一像素宽,类似于原始模式的“骨骼”。细化对于去除应用了图像处理滤波器(如边缘检测)的图像中的噪声非常有用。线细化类似于另一种形态学算子——腐蚀。
细化算法基于以下论文:张 & 苏恩,1984 和 陈 & 胡苏恩,1988。请参阅 参考。
此crate需要输入类型来自 image
crate。要使用此crate,将以下内容添加到您的 Cargo.toml
。
[dependencies.skeletonize]
version = "0.2"
特性
- 2 种线细化算法
- 支持黑色或白色前景色
- Sobel算子边缘检测
- 二值化(将图像转换为仅黑白像素)的阈值
示例 skeletonize.rs
是一个命令行程序,可以从仓库的 发布
页面下载二进制可执行文件。
细化算法比较
应将图像放大到100%以避免缩放伪影。
第一幅图像,从左到右:陈 & 胡苏恩,1988年图7(b)和7(c),标准
算法结果,修改
算法结果。
第二幅图像:标准
和 修改
标记方法的动画比较。
陈 & 胡苏恩的 修改
算法通常比张 & 苏恩的 标准
算法产生更好的线连通性、更少的噪声和更一致的单一像素宽的线条。
原始图像位于名为 gfx
的文件夹中,文件名为 chenhsu.png
。在细化线条之前,该图像在 0.3
的阈值下进行二值化处理。示例程序使用以下参数生成了图像结果。--method|-m
选项允许选择标准或修改后的像素标记算法,--threshold|-t
是灰度级阈值。
-i chenhsu.png -t 0.3 -m s -o chenhsu-standard.png
-i chenhsu.png -t 0.3 -m m -o chenhsu-modified.png
skeletonize.rs
示例程序 skeletonize
将库函数作为命令行应用程序暴露。可以通过以下命令运行,或者从Releases
下载后直接调用。
cargo r --release --example skeletonize -- [args]
示例
以下三个示例使用此图像作为输入。所有示例都包括等效的库代码。
使用 sobel4
(4向边缘检测)和线条细化,将边缘检测过滤器阈值设置为 0.3
。
cargo r --release --example skeletonize -- -i rustacean.png -e sobel4 -t 0.3
let mut filtered = sobel4::<foreground::Black>(&img, Some(0.3))?;
thin_image_edges::<foreground::Black>(&mut filtered, method, None)?;
不进行线条细化进行边缘检测,将边缘检测过滤器阈值设置为 0.3
,并将 --foreground|-f
颜色设置为白色。
-i rustacean.png -e sobel4 -t 0.3 --no-thin -f white
let filtered = sobel4::<foreground::White>(&img, Some(0.3))?;
通过省略 --threshold|-t
并使用 --no-thin
返回灰度边缘检测图像。为 sobel4
和 white
使用别名。
-i rustacean.png -e s4 --no-thin -f w
let filtered = sobel4::<foreground::White>(&img, None))?;
标题图像使用以下参数创建。
-i skeletonize.png -t 0.3
skeletonize::threshold(&mut img, 0.3)?;
thin_image_edges::<foreground::Black>(&mut img, method, None)?;
参考
Zhang, T. Y. & Suen, C. Y. (1984). A fast parallel algorithm for thinning digital patterns. Commun. ACM 27, 3 (March 1984), 236–239. DOI:10.1145/357994.358023
Chen, Yung-Sheng & Hsu, Wen-Hsing. (1988). A modified fast parallel algorithm for thinning digital patterns. Pattern Recognition Letters. 7. 99-106. DOI:10.1016/0167-8655(88)90124-9
许可
此软件包受以下任一许可证的许可
- 的 MIT 许可证,或
- 的 Apache 许可证(版本 2.0)
根据您的选择。
除非您明确声明,否则您有意提交的任何贡献,根据 Apache-2.0 许可证定义,均应双重许可如上所述,没有任何额外条款或条件。
依赖关系
~9.5MB
~26K SLoC