我遇到了一个问题,如下图所示是原始图像,底部的图像向左倾斜90度。有没有办法计算角度的变化。我已经尝试了霍夫的变换,我可以检测到位置,但是我无法检测到变化的天使。是否有替代方法可以检测到的度数。
答案 0 :(得分:5)
在使用对称仅相位匹配滤波器之前,我已经完成了这项工作。它实际上用于指纹识别,允许旋转和缩放。不幸的是,它非常复杂。您需要熟悉如何计算FFT和类似级别的数学。我没有在C#中做到这一点,但是在MATLAB中(以及在可综合的Verilog中,但这完全是另一个故事)。我建议首先使用MATLAB或类似的数学包,以确保你的算法正确。
希望有人已经在某个.NET图像处理库中实现了这个算法。
我使用的论文如下。它比算法更基于数学,所以将它转换为代码需要一些工作:
陈勤生; Defrise,M。; Deconinck,F。 "Symmetric phase-only matched filtering of Fourier-Mellin transforms for image registration and recognition," 模式分析与 机器智能,IEEE 交易,第16卷,第12期, pp.1156-1168,1994年12月摘要:提出了一种新的方法 匹配2D图像到翻译, 旋转和缩放参考图像。 该方法包括两个步骤: 傅立叶 - 梅林的计算 每个的不变量(FMI)描述符 要匹配的图像和匹配 FMI描述符。 FMI 描述符是翻译不变量, 并表示旋转和缩放 参数空间中的翻译。该 FMI描述符的匹配是 使用对称相位实现 匹配过滤(SPOMF)。该 FMI-SPOMF算法的性能 与...的相同或相似 仅相位匹配滤波时 处理图像翻译。该 新的显着优势 技术是它的匹配能力 精确旋转和缩放图像 并且有效率。创新是 SPOMF在FMI中的应用 描述符,保证高 辨别力量和优秀 在存在噪音的情况下的稳健性。 本文介绍了原理 新方法及其离散 任一图像的实现 检测问题或图像 注册问题。实际的 结果显示各种 在医学成像中的应用, 遥感,指纹 认可和多目标 识别
答案 1 :(得分:0)
您还可以循环旋转第二个图像恒定角度,并在每次迭代中计算两个图像之间的RMSE。匹配角度将是RMSE最小的位置。
以下是使用powershell实现此想法的ImageMagick脚本:
# convert images to equal sizes for pixel by pixel comparision
convert.exe p1.png -resize 73x73! p1.png
convert.exe p2.png -resize 73x73! p2.png
# initialize variables
$min_rmse = 1.0
$degrees_rotated = -1.0
# rotate second image by 10 degrees in each iteration
# and after that measure RMSE between first image and second rotated image
for ($i=0; $i -le 350; $i+=10) {
convert.exe p2.png -rotate $i tmp.png
convert.exe tmp.png -resize 73x73! tmp.png
$rmse = compare.exe -metric rmse p1.png tmp.png diff.png 2>&1
$rmse = ([string] $rmse).split(" ")[1]
$rmse = $rmse.replace("(","")
$rmse = [double] $rmse.replace(")","")
# find rotation angle where RMSE is minimal
if ($rmse -lt $min_rmse) {
$min_rmse = $rmse
$degrees_rotated = $i
}
}
Write-Host "two images are most similar when second image is rotated by $degrees_rotated deg (rmse is $min_rmse)"
Write-Host "Press any key to exit ..."
$host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
希望有所帮助。
附:
根据wiki,两个向量之间的RMSE可以用两种不同的方式计算。我不知道哪一个在ImageMagick中实现为
compare.exe -metric rmse命令,但可以肯定这可以通过询问IM开发人员或通过反复试验方法来确定。