img_rosenfield[dilate(imcorner(img_f, method=kitchen_rosenfeld)) .> 0.01] .= colorant"yellow"
img_fast = copy(img)
img_fast[dilate(fastcorners(img_f, 12, 0.05)) .> 0.01] .= colorant"yellow"
通常,imcorner和fastcorners的结果很小,例如一个像素。从ImageMorphology软件包中应用了膨胀函数,以突出显示通过imcorner或FAST确定的结果,可以让用户在绘制和预览特征时更好地表示特征。还使用了着色剂技术来获得精确的颜色值。
将所有四个图像合并为一个图像:
new_img = vcat(
hcat(img_harris, img_shi),
hcat(img_rosenfield, img_fast)
)
new_img[Int(size(new_img, 1) / 2), :] .= colorant"yellow"
new_img[:, Int(size(new_img, 2) / 2)] .= colorant"yellow"
imshow(new_img)
尝试在猫的图像上运行相同的代码,然后再次比较结果以查看是否有任何变化:
using Images, ImageFeatures, ImageMorphology, ImageView
img = Gray.(restrict(load(“cat-3417184_640.jpg”)))
img_f = Float16.(Gray.(img))
img_harris = copy(img)
img_harris[dilate(imcorner(img_f, method=harris)) .> 0.01] .= colorant"yellow"
img_shi = copy(img)
img_shi[dilate(imcorner(img_f, method=shi_tomasi)) .> 0.01] .= colorant"yellow"
img_rosenfield = copy(img)
img_rosenfield[dilate(imcorner(img_f, method=kitchen_rosenfeld)) .> 0.01] .= colorant"yellow"
img_fast = copy(img)
img_fast[dilate(fastcorners(img_f, 12, 0.05)) .> 0.01] .= colorant"yellow"
new_img = vcat(
hcat(img_harris, img_shi),
hcat(img_rosenfield,img_fast)
)
imshow(new_img)
除FAST以外的所有方法在图像周围都有角点。原因是,imcorner函数返回所有角点而没有任何阈值参数。
更新阈值以仅检索特征的前5%,然后再次比较结果:
img = Gray.(restrict(load(“cat-3417184_640.jpg”)))
img_f = Float16.(Gray.(img))
img_harris = copy(img)
img_harris[dilate(imcorner(img_f, Percentile(95), method=harris)) .> 0.01] = colorant"yellow"
img_shi = copy(img)
img_shi[dilate(imcorner(img_f, Percentile(95), method=shi_tomasi)) .> 0.01] = colorant"yellow"
img_rosenfield = copy(img)
img_rosenfield[dilate(imcorner(img_f, Percentile(95), method=kitchen_rosenfeld)) .> 0.01] = colorant"yellow"
img_fast = copy(img)
img_fast[dilate(fastcorners(img_f, 12, 0.05)) .> 0.01] = colorant"yellow"
new_img = vcat(
hcat(img_harris, img