当前位置:首页 >> 药膳食疗 >> 计算机听觉系列_5、OpenCV图像处理入门

计算机听觉系列_5、OpenCV图像处理入门

发布时间:2023-04-18

释为权重的字面。当我们希望近似值高水平一段距离上的Sobel黎曼的时候,那么我们就设定变量中的的变量dx=1,dy=0.对于斜向一段距离也是如此。那么这里我们就都会想:如果我们两个一段距离都一起设置这样是不是比近似值再多x的一段距离然后近似值y一段距离,然后进自为结合这样是不是更加在的方便一些呢?假定下示意图中的的方式则一比方式则二更加在的关的方便呢?

事实上不是这样的,而且两个缩放有很小的差异,这个我们更进一步都会碰到结果。那么当我们再多造出了这一步操纵之后,我们还要做到两个缩放的权重和,其变量是:

dst=cv2.addWeighted( src1 , alpha , src2 , beta , gamma )1

这里我们话说的通俗一点就是,src1对此近似值的x连杆一段距离的缩放,alpha对此x连杆一段距离上的缩放所占的总量,src2对此近似值的y连杆一段距离的缩放,beta对此y连杆一段距离上的缩放所占的总量是多少,之后gamma对此一个修正数量级。

dst(I)=saturate(src1(I)*alpha+src2(I)*beta+gamma)

每一次我们来验证一下各个结果:

import cv2import numpy as npo = cv2.imread('image\sobel4.bmp',cv2.IMREAD_GRAYSCALE)sobelx = cv2.Sobel(o,-1,1,0)cv2.imshow("original",o)cv2.imshow("x",sobelx)cv2.waitKey()cv2.destroyAllWindows()12345678

这里我们没有人缘故绝对系数近似值x连杆一段距离上的Sobel黎曼,获由此而来的结果是:

很明显左边的没有人代入。

import cv2import numpy as npo = cv2.imread('image\sobel4.bmp',cv2.IMREAD_GRAYSCALE)sobelx = cv2.Sobel(o,cv2.CV_64F,1,0)sobelx = cv2.convertScaleAbs(sobelx) # 转到uint8 cv2.imshow("original",o)cv2.imshow("x",sobelx)cv2.waitKey()cv2.destroyAllWindows()123456789

当我们缘故绝对系数后的结果是:

对于斜向一段距离的结果也是如此。之后我们近似值造出x,y的一段距离。进自为相结合并且和直接将x,y对此造出1的结果进自为一下对比,我们来看结果:一个中的心代码:

sobelx = cv2.Sobel(o,cv2.CV_64F,1,0)sobely = cv2.Sobel(o,cv2.CV_64F,0,1)sobelx = cv2.convertScaleAbs(sobelx) # 转到uint8 sobely = cv2.convertScaleAbs(sobely) sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0) sobelxy11=cv2.Sobel(o,cv2.CV_64F,1,1)sobelxy11=cv2.convertScaleAbs(sobelxy11)1234567

根据结果我们可以获由此而来:常用了dx,dy的情况下无法探测到边。然后我们用lena来测试一下结果。

在我们相加在对此的情况下,底部探测的圆弧十分清晰,将分割的地带表达的特别清楚。

⭐️3.Scharr黎曼关的及涉及操纵

经过大量的科学研究验证,发现3*3的Sobel黎曼可能并不是特别的精确,于是又提造出了其所的Scharr黎曼,其实就是忽略了GPU的数量级而已。

Sobel黎曼由原本的121变为了3 10 3,这样的一个组合成。其余的操纵都是和Sobel黎曼相符我们来简要的暗示一下:dst=Scharr(src, ddpeth, dx, dy)这上面少了氘的不等,但是和Sobel黎曼依然依然,变量这里就不断言了,唯一多种不同的就是我们常用Sobel黎曼可以设置造出dx=1,dy=1。那么对于Scharr黎曼如果这样设置就都会报错。这里需要注意一下。满足条件:dx>= 0 && dy>= 0 && dx+dy == 1

import cv2import numpy as npo = cv2.imread('image\scharr.bmp',cv2.IMREAD_GRAYSCALE)scharrx = cv2.Scharr(o,cv2.CV_64F,1,0)scharry = cv2.Scharr(o,cv2.CV_64F,0,1)scharrx = cv2.convertScaleAbs(scharrx) # 转到uint8 scharry = cv2.convertScaleAbs(scharry) scharrxy = cv2.addWeighted(scharrx,0.5,scharry,0.5,0) cv2.imshow("original",o)cv2.imshow("x",scharrx)cv2.imshow("y",scharry)cv2.imshow("xy",scharrxy)cv2.waitKey()cv2.destroyAllWindows()1234567891011121314 ⭐️4.Sobel黎曼和Scharr黎曼的比较

对于上述我们的测试示意图,其实看不造出来Sobel黎曼和Scharr黎曼刚才有什么区别,看起来是相符的,那么我们这里常用大美女lena进自为一次Sobel和Scharr,获由此而来结果进自为对比一下可以究竟:

sobelx = cv2.Sobel(o,cv2.CV_64F,1,0,ksize=3)sobely = cv2.Sobel(o,cv2.CV_64F,0,1,ksize=3)sobelx = cv2.convertScaleAbs(sobelx) # 转到uint8 sobely = cv2.convertScaleAbs(sobely) sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0) scharrx = cv2.Scharr(o,cv2.CV_64F,1,0)scharry = cv2.Scharr(o,cv2.CV_64F,0,1)scharrx = cv2.convertScaleAbs(scharrx) # 转到uint8 scharry = cv2.convertScaleAbs(scharry) scharrxy = cv2.addWeighted(scharrx,0.5,scharry,0.5,0)12345678910

很明显,这里我们看一下了lena的腰部部分,可以碰到常用Shcarr黎曼进自为近似值的时候,描绘的更加在细致。

⭐️5.laplacian黎曼关的及涉及操纵

贝塞尔黎曼类似于二阶sobel导数。基本上上,在OpenCV中的通过调用sobel黎曼来近似值贝塞尔黎曼。常用的公式为:∆ = 2/2 + 2/2常用的正弦氘也和Sobel和Shcarr黎曼的不相符:

看起来比如话说柯西的,哈哈哈。这里我们进自为一下详述,P5new=(p2+p4+p6+p8)-4*p5

当没有人位处边界的时候呢,我们可以获由此而来P5的数量级是变化并不大的,当位处边界的时候,P5的数量级是变化更为大的,这是因为什么呢?

对于贝塞尔黎曼的变量估计我们也可以猜到:dst = cv2.Laplacian( src, ddepth )自然是没有人高水平一段距离和斜向一段距离的。系数得注意中的,近似值分量系数可能都会造出现小数。通常处置的缩放是np.uint8多种类型,如果结果也是该多种类型,所有小数都会自动截断为0,发生信息丢失。所以,通常近似值时,常用更高的数据多种类型cv2.CV_64F,由此而来绝对系数后,再行转换成为np.uint(cv2.CV_8U)多种类型。所以我们还是要由此而来一次绝对系数的GPU:dst = cv2.convertScaleAbs( src )

import cv2import numpy as npo = cv2.imread('image\laplacian.bmp',cv2.IMREAD_GRAYSCALE)laplacian = cv2.Laplacian(o,cv2.CV_64F)laplacian = cv2.convertScaleAbs(laplacian) # 转到uint8 cv2.imshow("original",o)cv2.imshow("laplacian",laplacian)cv2.waitKey()cv2.destroyAllWindows()123456789

我们对lena进自为一次贝塞尔黎曼操纵,获由此而来的结果是:

⭐️6.Canny底部探测的基本概念

Canny底部探测黎曼是John F. Canny于 1986 年开发计划造出来的一个多级底部探测演算法。更为重要的是 Canny 创始了底部探测近似值假话说(Computational theory of edge detection)断言这项技术如何工作。Canny 的较大限度是找到一个最优化的底部探测演算法,最优化底部探测的意义是:1.最优化探测:演算法并能必要多地标明造出缩放中的的基本上底部,漏检真实底部的几率和误检非底部的几率都必要小;2.最优化定位准则:探测到的底部点的位置距离基本上底部点的位置最近,或者是由于杂讯严重影响引起探测造出的底部相反物体的真实底部的程度很小;3.探测点与底部点一一对应:黎曼探测的底部点与基本上底部点应该是一一对应。Canny底部探测的一般步骤:1.去则否 2.分量GPU 3.非极大系数诱导 4.平稳阈系数。下面我们就分别详述一下这些操纵:1.去则否底部探测容易受到杂讯的严重影响。因此,在进自为底部探测前,通常需要先行进自为去则否。我们一般常用柯西滤波进自为缩放去则否处置。也就是让临近的纹理很强更高的重要度。对周围纹理近似值加在权平均系数,较近的纹理很强较大的权重系数。

比较像我们之间写到的k近邻演算法的字面哈。进自为去则否处置之后呢,我们对于纹理缩放进自为一次Sobel黎曼分量GPU。2.分量GPU = 根号下(2 + 2)对于一段距离: = −1(/)

对于每的点近似值之后的一段距离就是这样。不等和一段距离在示意图中的都并未进自为了标记。分量的一段距离一般好像与边界斜向。分量一段距离被归为四类:斜向,高水平,和两个对角线。3.非极大系数诱导在获得了分量和一段距离后,迭代缩放,去除所有不是边界的点。借助于方法:逐个迭代纹理点,假定当前纹理点是不是周围纹理点中的很强并不相同一段距离分量的较大系数。

点A、点B、点C三点很强并不相同的一段距离,分量一段距离斜向于底部。假定点A是否为点A、点B、点C的暂时性较大系数 :如果是,保有该点;否则,它被诱导(加在倍)。

这里就对此在斜向一段距离上进自为了诱导,由此而来造出较大系数。4.平稳阈系数这里对非极大系数诱导之后,我们进自为了一次平稳阈系数操纵,分别由此而来一个很小阈系数和一个较大阈系数,然后缩放纹理点的曲率与较大很小阈系数毗连则保有,如果不毗连则抗拒。

我们来看一下底部探测的结果示意图:

⭐️7.Canny底部探测的变量及常用

Canny底部探测的变量是:edges = cv2.Canny( image, threshold1, threshold2 )threshold1对此阈系数1,threshold2对此阈系数2。也就是我们刚刚参阅到的较大很小阈系数。

import cv2import numpy as npo=cv2.imread("image\canny.bmp",cv2.IMREAD_GRAYSCALE)r=cv2.Canny(o,100,200)cv2.imshow("original",o)cv2.imshow("result",r)cv2.waitKey()cv2.destroyAllWindows()12345678

然后我们在对lena做到一次,结果是:

调整阈系数,可以支配底部先行前。maxVal、minVal缩小,有更多的先行前信息。

南京妇科检查
四川甲状腺医院排名榜
经常看手机眼睛干涩滴什么眼药水
用英太青凝胶的禁忌有哪些
上火嗓子疼吃什么中药管用
标签:
友情链接: