baheesa/image-copy-move-forgery-detection

GitHub: baheesa/image-copy-move-forgery-detection

基于 SIFT 与 FAST+BRIEF 双分支关键点匹配的图像复制-移动篡改检测 MATLAB 工具,能够精确定位被篡改的图像区域。

Stars: 0 | Forks: 0

# 基于 FAST、BRIEF 和 SIFT 的图像复制-移动伪造检测技术 ### FAST · BRIEF · SIFT 来自我们 Springer 论文(*Multimedia Tools and Applications*, 2022)的 MATLAB 代码
[![论文](https://img.shields.io/badge/Paper-Springer-0F4C81?style=flat-square)](https://link.springer.com/article/10.1007/s11042-022-12915-y) [![PDF](https://img.shields.io/badge/PDF-Download-C41E3A?style=flat-square)](https://link.springer.com/content/pdf/10.1007/s11042-022-12915-y.pdf) [![DOI](https://img.shields.io/badge/DOI-10.1007/s11042--022--12915--y-blue?style=flat-square)](https://doi.org/10.1007/s11042-022-12915-y) [![许可证](https://img.shields.io/badge/License-MIT-22c55e?style=flat-square)](LICENSE) [![MATLAB](https://img.shields.io/badge/MATLAB-R2018b+-orange?style=flat-square)](https://www.mathworks.com/products/matlab.html)
[LinkedIn](https://www.linkedin.com/in/baheesafatima/) · [ResearchGate](https://www.researchgate.net/profile/Baheesa-Fatima-2) · [ORCID](https://orcid.org/0009-0003-2757-5672) · [电子邮件](mailto:baheesafatima@gmail.com)
**关键词:** 复制-移动伪造检测 · 图像伪造检测 · 数字图像取证 · FAST · BRIEF · SIFT · g2NN · 关键点匹配 · 区域复制 · 伪造定位 · MATLAB · 被动取证 · 图像篡改检测 ## 这是什么 有时人们会通过复制图像中的一个图块并将其粘贴到*同一*图像的其他位置来隐藏或捏造内容。这就是**复制-移动伪造**。经过轻微的旋转、缩放或 JPEG 压缩后,你通常无法看出修改的痕迹。 这个仓库是我们论文背后的 MATLAB 代码: 我们不仅给出“是否经过伪造”的结论,还会尝试**标出**复制区域的具体位置。 用通俗的话来说,它的工作原理如下: 1. **SIFT** 能在平滑区域提取特征点(普通的角点检测器在这些地方往往无能为力)。 2. **FAST + BRIEF** 能在纹理区域提取角点。 3. **g2NN** 匹配这些点——包括当某个内容被粘贴了多次的情况。 4. 形态学操作、**SSIM** 和 **LSC** 会清洗匹配结果并收紧最终的掩膜。 - 论文:[Springer](https://link.springer.com/article/10.1007/s11042-022-12915-y) - PDF:[下载](https://link.springer.com/content/pdf/10.1007/s11042-022-12915-y.pdf) *(可能需要图书馆账号权限访问)* - DOI:[10.1007/s11042-022-12915-y](https://doi.org/10.1007/s11042-022-12915-y) - 引用代码:[`CITATION.cff`](CITATION.cff) 如果你在自己的工作中使用了本代码,引用对我们意义重大——非常感谢。 ## 为什么要使用两种检测器? 大多数传统的关键点方法依赖于纹理角点,在平滑区域(如天空、墙壁、皮肤)往往会悄无声息地失效。基于块的方法在旋转或缩放时可能会很慢且脆弱。我们**并行运行两个分支**,合并它们的匹配结果,然后进行定位——这样两类内容都有机会被检测到。 | 优势 | 实际效果 | |---|---| | 平滑 + 纹理 | SIFT 和 FAST+BRIEF 覆盖图像的不同部分 | | 多次粘贴 | g2NN 可以将一个点与多个副本关联起来 | | 几何攻击 | 对旋转和缩放的粘贴进行了测试 | | 压缩 | 包含了 JPEG 压缩的测试用例 | | 定位 | 你会得到一个掩膜,而不仅仅是一个是/否的标签 | | 成本 | 旨在普通的 MATLAB 笔记本电脑上运行 | ## 方法流程图 这是论文中的图 1——展示了整个 pipeline 的全貌。
Method diagram for FAST BRIEF SIFT copy-move image forgery detection
| 阶段 | 说明 | |---|---| | 输入 | 伪造的照片 | | SIFT 分支 | 去噪 → 检测 → 描述 → g2NN(平滑区域) | | FAST + BRIEF 分支 | 锐化 → FAST 角点 → BRIEF 比特 → g2NN(纹理区域) | | 匹配特征 | 合并两个分支 | | 后处理 | 剔除离群点 → 定位 → 使用 LSC + SSIM 进行精炼 | 如果你想对照阅读代码和论文,[`main.m`](main.m) 中的注释也指向了相同的章节号(2.1–2.3)。 ## 快速开始 你需要安装 MATLAB R2018b 或更高版本,并包含 Image Processing Toolbox。 ``` git clone https://github.com/baheesa/image-copy-move-forgery-detection.git cd image-copy-move-forgery-detection ``` 在此文件夹中打开 MATLAB,然后在 [`main.m`](main.m) 中设置如下配对: ``` img_name = 'examples/demo/img3.png'; gt_img = 'examples/demo/img3_gt.png'; ``` 运行: ``` main ``` 你应该会看到匹配的点、连接线、黄色的定位覆盖图,以及基于 ground truth 计算出的 Precision / Recall / F-measure。 在 [`examples/`](examples/README.md) 目录中浏览更多场景(每对图像下方都有简短说明): ``` img_name = 'examples/translation/img2.jpg'; gt_img = 'examples/translation/img2_gt.jpg'; ``` ## 仓库内容 ``` . ├── main.m # run this ├── FAST_*.m, BRIEF_*.m # textured branch ├── g2nn.m, dist2.m # matching helpers ├── getFmeasure.m # Precision / Recall / F-measure ├── LSC_mex.mexw64 # localization (Windows) ├── vlfeat-0.9.21/ # SIFT ├── examples/ # demo + translation / rotation / scaling ├── docs/figures/ # paper Fig. 1 ├── CITATION.cff ├── LICENSE └── README.md ``` ## 默认参数 这些是我们在脚本中使用的值(与论文中的思路一致): | 参数 | 默认值 | 作用 | |---|---|---| | FAST 阈值 γf | `0.3`(如果角点过多则改为 `0.5`) | FAST 的敏感度 | | BRIEF 长度 | `256` | 每个描述符的比特数 | | BRIEF 窗口 | `11` | 图块大小 | | BRIEF 模式 | `'gaussian'` | 采样对的提取方式 | | g2NN 比例 γm | `0.05` | 匹配严格程度 | | LSC 超像素 | `200` | 分割的精细程度 | | LSC 比例 | `0.015` | 分割的紧凑度 | | 分割投票 | `≥ 0.6` | 保留强烈的伪造分割块 | | SSIM γs | `≥ 0.60` | 判断两个斑块是否近似相同 | ## 评分方式 我们将预测掩膜与 ground truth 掩膜逐像素进行比较([`getFmeasure.m`](getFmeasure.m)): $$ \mathrm{Precision} = \frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FP}}, \quad \mathrm{Recall} = \frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}, \quad F = \frac{2\cdot\mathrm{TP}}{2\cdot\mathrm{TP}+\mathrm{FP}+\mathrm{FN}} $$ 论文在普通的和经过攻击的复制-移动案例上,报告了这些指标与其他关键点方法和块方法的对比结果。 ## 示例 伪造图像与定位图像的并排对比(每个场景都有简短说明)位于 [`examples/README.md`](examples/README.md) 中: - `demo/` — 六张起始图像 + ground truth - `translation/` — 普通平移粘贴 + 我们的黄色覆盖图 - `rotation/` — 旋转粘贴 - `scaling/` — 缩放粘贴 ## 引用 请引用该论文。GitHub 的 **Cite this repository** 按钮也可以通过 [`CITATION.cff`](CITATION.cff) 使用。 ``` @article{Fatima2022CopyMove, title = {{FAST}, {BRIEF} and {SIFT} based image copy-move forgery detection technique}, author = {Fatima, Baheesa and Ghafoor, Abdul and Ali, Syed Sohaib and Riaz, M. Mohsin}, journal = {Multimedia Tools and Applications}, volume = {81}, pages = {43805--43819}, year = {2022}, doi = {10.1007/s11042-022-12915-y}, url = {https://link.springer.com/article/10.1007/s11042-022-12915-y} } ``` ## 作者与联系方式 | 作者 | 所属单位 | |---|---| | **Baheesa Fatima** *(通讯作者)* | NUST, 伊斯兰堡, 巴基斯坦 | | **Abdul Ghafoor** | NUST, 伊斯兰堡, 巴基斯坦 | | **Syed Sohaib Ali** | COMSATS University, 伊斯兰堡, 巴基斯坦 | | **M. Mohsin Riaz** | COMSATS University, 伊斯兰堡, 巴基斯坦 | 有问题或遇到困难?发邮件最简单:[baheesafatima@gmail.com](mailto:baheesafatima@gmail.com) - [LinkedIn](https://www.linkedin.com/in/baheesafatima/) - [ResearchGate](https://www.researchgate.net/profile/Baheesa-Fatima-2) - [ORCID](https://orcid.org/0009-0003-2757-5672) ## 出版信息 | | | |---|---| | 期刊 | Multimedia Tools and Applications (Springer) | | 收稿日期 | 2020年10月20日 | | 修回日期 | 2021年7月29日 | | 录用日期 | 2022年3月9日 | | 出版日期 | 2022年5月27日 | | 页码 | Vol. 81, 43805–43819 | ## 版权 **© 2022 Baheesa Fatima, Abdul Ghafoor, Syed Sohaib Ali, and M. Mohsin Riaz.** - 这里的 **MATLAB 代码** 归我们所有,并根据 [MIT License](LICENSE) 发布。 - **已发表的文章 / 出版商提供的 PDF** 仍受 Springer 版权保护——请使用 PDF 链接进行阅读,除非他们的条款允许,否则请勿将其视为开放数据。 - **示例照片** 仅用于演示;如果你广泛使用了这些数据集,请引用 Cozzolino *et al.* (2015) 和 Ardizzone *et al.* (2015)。 - VLFeat、LSC 和 `dist2` 保留其各自的开源许可证。 ## 为什么选择 MIT? MIT 许可证简短、为大学所熟悉,并且很容易在其他研究代码中重用——同时仍然要求版权声明随文件一起传播。它**不能**替代对论文的引用。如果你使用此代码发表论文,请务必引用 MTAP 2022 文章并保留文件头部声明。 按“原样”提供,不作任何保证。
标签:MATLAB, 图像取证, 复制-移动篡改检测, 客户端加密, 数字取证, 特征提取, 自动化脚本