欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

python计算图像的曲率

发布时间:2024/3/24 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python计算图像的曲率 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

由于某些原因,需要计算图像的曲率。找了半天,网上都是曲率滤波的代码,而没有计算图像曲率的代码。于是去找曲率的计算公式,发现公式很简单,所以自己就用python写了一下。
平均曲率的计算公式如下所示

python代码如下所示:

import numpy as np import cv2 from skimage import color import matplotlib.pyplot as plt import imageio img = cv2.imread("xxx.jpg") img = color.rgb2gray(img) x , y = np.gradient(img) #一阶导数 xx, xy = np.gradient(x)  #二阶偏导数 yx, yy = np.gradient(y)   #二阶偏导数 Iup = (1+x\*x)\*yy - 2\*x\*y\*xy + (1+y\*y)\*xx  #公式的分子 Idown = np.power((2\*(1 + x\*x + y\*y)),1.5) #公式的分母 final = Iup/Idown final=abs(final) final = (final-final.min())/(final.max()-final.min())    #将结果归一化 final = final * 255     #将像素值扩展为0-255 final = final.astype(np.uint8) plt.imshow(final) imageio.write("xxx.jpg",final) #保存图像

写成函数如下所示:

def cal_curvature(img):x , y = np.gradient(img)xx, xy = np.gradient(x)yx, yy = np.gradient(y)Iup = (1+x\*x)\*yy - 2\*x\*y\*xy + (1+y\*y)\*xxIdown = np.power((2\*(1 + x\*x + y\*y)),1.5) final = Iup/Idownfinal=abs(final)final = (final-final.min())/(final.max()-final.min())final = final * 255final = final.astype(np.uint8) return final

总结

以上是生活随笔为你收集整理的python计算图像的曲率的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。