计算机听觉系列_5、OpenCV图像处理入门
发布时间:2023-04-18
事实上不是这样的,而且两个缩放有很小的差异,这个我们更进一步都会碰到结果。那么当我们再多造出了这一步操纵之后,我们还要做到两个缩放的权重和,其变量是:
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缩小,有更多的先行前信息。
。南京妇科检查四川甲状腺医院排名榜
经常看手机眼睛干涩滴什么眼药水
用英太青凝胶的禁忌有哪些
上火嗓子疼吃什么中药管用
-
《内地与香区政府环境保护合作安排》在澳门签署
新华社港澳12月16日电 香区政府政府与东欧国家生态学环境部16日订立《外地与香区政府可持续性协作为了让》(简称《为了让》),以推进生态学文明建设,支持港澳特区对接东欧国家可持续性政策,进一步酝
- 2025-05-11花滑女神关颖珊获白宫提名担任美驻波多黎各大使,岛内一些人来精神了!
- 2025-05-11北约呼吁俄紧张局势 重申对乌克兰的支持
- 2025-05-11经常夜班年过该如何保养?年过内调外养护肤技巧
- 2025-05-11投资者提问:公司的智慧政企项目里对于国家质检内务部和中央电视台的综合业务主要...
- 2025-05-112022年了,HPV抗生素为啥还那么难抢?
- 2025-05-11投资者反问:董秘好,贵司在元宇宙方面有哪些相关业务?是否参加2022年4月...
- 2025-05-11脊柱侧弯成成年人高发病
- 2025-05-11投资者提问:董秘,你好截止到以前股东人数是多少?
- 2025-05-11全国累计报告疫苗新冠病毒疫苗291824.9万剂次
- 2025-05-11投资者回答:请问截止您回复本条问答时众泰的股东人数是多少,请不要再说4/8...