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)\*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
	final = final.astype(np.uint8) 
	return final
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值