jsvascript图像处理-(计算机视觉应用)图像金字塔
前言在上一篇文章中,我们解释了边缘梯度计算函数。在这篇文章中,我们开始了解图像金字塔。形象金字塔?图像金字塔广泛应用于计算机视觉应用中。图像金字塔是图像的集合。集合中的所有图像都来自同一个原始图像,并通过对原始图像进行连续下采样而获得。有两种常见的图像金字塔:高斯金字塔:用于下采样拉普拉斯金字塔:和高斯金字塔3360用于从下金字塔图像重建上未采样图像。
像金字塔一样,高斯金字塔是从底层原始图像逐渐采样下来的,变得越来越小。那么如何获得下一个图像呢?一、与高斯核的卷积:。
然后,删除所有偶数行和列。可以看出,下一级的图像大约是上一级的1/4。那么向上转化是如何转化的呢?首先,将图像线扩大两倍,然后用0填充添加的线。最后,将高斯核乘以4并卷积。高斯金字塔复制代码如下: var pyrdown=function(_ src,_ _ dst) {_ _ src | | error(参数。被调用者,is _ undefined _ or _ null/* { line } */);if(_ src . type _ _ src . type==' CV_RGBA '){ var width=_ _ src . col,height=__src.row,dWidth=((width 1) width)/2,dHeight=((height 1) height)/2,sData=__src.data,dst=__dst || new Mat(dHeight,dWidth,CV _ RGBA),dstData=dst.datavar with border mat=copy make border(_ src,2,2,0,0),mData=withBorderMat.data,mWidth=with border mat . col;var newValue,nowX,offsetY,offsetI,dOffsetI,I,j;var kernel=[1,4,6,4,1,16,24,16,4,24,36,24,6,16,24,16,4,4,6,4,1];for(I=Height;I-;){ dOffsetI=i * dWidthfor(j=DWidth;j-;){ for(c=3;c-;){ NewValue=0;for(y=5;y-;){ offsecty=(y I * 2)* mWidth * 4;for(x=5;x-;){ NoWx=(x j * 2)* 4c;new value=(mData[offset nowX]* kernel[y * 5x]);} } dst data[(j DofSeti)* 4 c]=NewValue/256;} dst data[(j DofSeti)* 4 ^ 3]=mData[offsecty 2 * mWidth * 4(j * 2 ^ 2)* 4 ^ 3];} } } else { error(arguments . caller,UNSPORT _ DATA _ TYPE/* { line } */);}返回dst};D width=((width1) width)/2,d height=((height1) height)/2其中a 1等于a% 2,即求余数除以2。我们意识到的时候并没有按照上面的步骤去做,因为这样会效率不高,但是我们直接创建了原始矩阵的1/4矩阵,然后在卷积的时候跳过了需要删除的行和列。同样,创建卷积后,由于有些地方必须为0,所以在实际卷积过程中忽略了内核的一些元素。复制代码如下: var丙酮酸=function(_ src,_ _ dst) {_ _ src | | error(参数。被调用者,is _ undefined _ or _ null/* { line } */);if(_ src . type _ _ src . type==' CV_RGBA '){ var width=_ _ src . col,height=__src.row,dWidth=width * 2,dHeight=height * 2,sData=__src.data,dst=__dst || new Mat(dHeight,dWidth,CV _ RGBA),dstData=dst.datavar with border mat=copy make border(_ src,2,2,0,0),mData=withBorderMat.data,mWidth=with border mat . col;var newValue,nowX,offsetY,offsetI,dOffsetI,I,j;var kernel=[1,4,6,4,1,16,24,16,4,24,36,24,6,16,24,16,4,4,6,4,1];for(I=Height;I-;){ dOffsetI=i * dWidthfor(j=DWidth;j-;){ for(c=3;c-;){ NewValue=0;for(y=2(I ^ 1);y-;){ offsecty=(y((I 1)1))* mWidth * 4;for(x=2(j ^ 1);x-;){ NoWx=(x((j 1)1))* 4c;new value=(mdata[offset nowx]* kernel[(y * 2(I 1 ^ 1))* 5(x * 2(j 1 ^ 1))]);} } dst data[(j DofSeti)* 4 c]=NewValue/64;} DsDATa[(j DofSeti)* 4 3]=MdDATa[offsetY 2 * MwIDth * 4(((j 1)1)2)* 4 3];} } } else { error(arguments . caller,UNSPORT _ DATA _ TYPE/* { line } */);}返回dst};效果图
版权声明:jsvascript图像处理-(计算机视觉应用)图像金字塔是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。