#border #image #entropy #algorithm

enimda

基于熵的图像边框检测

11 个不稳定版本 (3 个破坏性更新)

使用旧的Rust 2015

0.4.1 2017年4月24日
0.4.0 2017年4月23日
0.3.4 2017年3月1日
0.3.3 2017年2月25日
0.1.5 2017年1月29日

#14 in #border

每月下载量 27

MIT 许可证

1MB
203 代码行

ENIMDA

基于熵的图像边框检测算法:检测图像每边的边框或空白偏移,支持动画GIF。

在crates.io的最新版本 travis ci build status

算法(简化版)

从顶部开始,对图像逆时针旋转,以保持感兴趣的一侧在顶部

  • 获取图像高度的25%作为上块
  • 获取与上块相同高度的下块
  • 计算两个块及其差异的熵
  • 将上块缩小1px
  • 重复步骤2,直到达到图像边缘
  • 边框位于熵差异最大的两个块之间
Sliding from center to edge - searching for maximum entropy difference

示例

找到图像边框

extern crate enimda;

use std::path::Path;
use enimda::enimda;

fn main() {
    let path = Path::new("source.jpeg");
    let borders = enimda(&path, Some(10), Some(512), Some(50), Some(0.25), Some(0.5), Some(false)).unwrap();
    println!("{:?}", borders);
}

演示

有关演示,请参阅 ENIMDA 演示

它还作为“去除边框”工具存在于 Picture Instruments

测试

cargo test

依赖项

~13MB
~42K SLoC