永发信息网

对图像进行双线性插值算法后,图像出现块效应怎么解决

答案:2  悬赏:0  手机版
解决时间 2021-02-04 20:45
  • 提问者网友:藍了天白赴美
  • 2021-02-04 10:02
对图像进行双线性插值算法后,图像出现块效应怎么解决
最佳答案
  • 五星知识达人网友:躲不过心动
  • 2021-02-04 11:03
interpolation 插值方法,类似于 CV_INTER_NN 方法。当图像放大时,dst 输出图像,该方法可以避免波纹出现。当图像缩小时候;
src 输入图像,
CV_INTER_LINEAR - 双线性插值 (缺省使用)
CV_INTER_AREA - 使用象素关系重采样.
该方法就是用于将图像改变为dst定义的大小..
CV_INTER_CUBIC - 立方插值, CvArr* dstvoid cvResize( const CvArr* src,然后根据你选择的插值方法进行插值, int interpolation=CV_INTER_LINEAR ):
CV_INTER_NN - 最近邻插值.
全部回答
  • 1楼网友:老鼠爱大米
  • 2021-02-04 11:35
何东健的《数字图像处理》光盘第六章有前两种的程序 完整程序已发你邮箱 核心代码如下: for(y = 0; y < nnewheight; y++) { //指向新图像第y行 //注意此处宽度和高度是新图像的宽度和高度 pnewtemp = pnewbits; pnewtemp += (nnewheight - 1 - y) * nnewwidthbytes; //针对图像每列进行操作 for(x = 0; x < nnewwidth; x++) { //计算该像素在源图像中的坐标 int y0 = (long) (y / fyzoomratio + 0.5); int x0 = (long) (x / fxzoomratio + 0.5); //判断是否在源图范围内 if( (x0 >= 0) && (x0 < noldwidth) && (y0 >= 0) && (y0 < noldheight)) { //用双线性插值 if(bbilinear) { unsigned char *ptemp = interpolation (noldwidth, noldheight, (float)x0, (float)y0, noldwidthbytes, nmovedbits, poldbits); //复制像素 memcpy(pnewtemp, ptemp, nmovedbits); delete [] ptemp ; } else //最近邻插值 { //指向源图像第y0行,第x0个像素 //注意此处宽度和高度应该互换 poldtemp = poldbits; poldtemp += (noldheight - 1 - y0) * noldwidthbytes; poldtemp += x0 * nmovedbits; //复制像素 memcpy(pnewtemp, poldtemp, nmovedbits); } } pnewtemp += nmovedbits; } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯