OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 250|回复: 1

滤波操作

[复制链接]
发表于 2018-6-9 15:27:20 | 显示全部楼层 |阅读模式
本帖最后由 minglou 于 2018-6-9 17:00 编辑

//**********第一种方法************************
                if ((i - 1 >= 0) && (j - 1) >= 0 && (i + 1)<src.rows && (j + 1)<src.cols) {//边缘不进行处理
                        
                        dst.at<Vec3b>(i, j)[0] = (src.at<Vec3b>(i, j)[0] + src.at<Vec3b>(i - 1, j - 1)[0] + src.at<Vec3b>(i - 1, j)[0] + src.at<Vec3b>(i, j - 1)[0] +
                                src.at<Vec3b>(i - 1, j + 1)[0] + src.at<Vec3b>(i + 1, j - 1)[0] + src.at<Vec3b>(i + 1, j + 1)[0] + src.at<Vec3b>(i, j + 1)[0] +
                                src.at<Vec3b>(i + 1, j)[0]) / 9;
                        dst.at<Vec3b>(i, j)[1] = (src.at<Vec3b>(i, j)[1] + src.at<Vec3b>(i - 1, j - 1)[1] + src.at<Vec3b>(i - 1, j)[1] + src.at<Vec3b>(i, j - 1)[1] +
                                src.at<Vec3b>(i - 1, j + 1)[1] + src.at<Vec3b>(i + 1, j - 1)[1] + src.at<Vec3b>(i + 1, j + 1)[1] + src.at<Vec3b>(i, j + 1)[1] +
                                src.at<Vec3b>(i + 1, j)[1]) / 9;
                        dst.at<Vec3b>(i, j)[2] = (src.at<Vec3b>(i, j)[2] + src.at<Vec3b>(i - 1, j - 1)[2] + src.at<Vec3b>(i - 1, j)[2] + src.at<Vec3b>(i, j - 1)[2] +
                                src.at<Vec3b>(i - 1, j + 1)[2] + src.at<Vec3b>(i + 1, j - 1)[2] + src.at<Vec3b>(i + 1, j + 1)[2] + src.at<Vec3b>(i, j + 1)[2] +
                                src.at<Vec3b>(i + 1, j)[2]) / 9;
                        //**************************************************************
                /*        
                //**********第二种方法************************        
                for (int ii = -size; ii <= size; ii++) {
                        for (int jj = -size; jj <= size; jj++) {
                                dst.at<Vec3b>(i, j)[0] += src.at<Vec3b>(i + ii, j + jj)[0];
                                dst.at<Vec3b>(i, j)[1] += src.at<Vec3b>(i + ii, j + jj)[1];
                                dst.at<Vec3b>(i, j)[2] += src.at<Vec3b>(i + ii, j + jj)[2];
                        }
                }*/
                /*dst.at<Vec3b>(i, j)[0] = dst.at<Vec3b>(i, j)[0] / 9;
                dst.at<Vec3b>(i, j)[1] = dst.at<Vec3b>(i, j)[1] / 9;
                dst.at<Vec3b>(i, j)[2] = dst.at<Vec3b>(i, j)[2] / 9;*/
                //**************************************************************
                }
        else {//边缘赋值
                        dst.at<Vec3b>(i, j)[0] = src.at<Vec3b>(i, j)[0];
                        dst.at<Vec3b>(i, j)[1] = src.at<Vec3b>(i, j)[1];
                        dst.at<Vec3b>(i, j)[2] = src.at<Vec3b>(i, j)[2];
                }
        }


均值滤波对每个像素点进行访问操作。两种方法,第一种是显示正确的,为什么第二种显示的图片就错误了呢?????
回复

使用道具 举报

 楼主| 发表于 2018-6-9 17:00:33 | 显示全部楼层
大佬来看看呀!!!已经debug好长时间了,
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|blog|OpenCV中文网站 ( 粤ICP备13079875号-2

GMT+8, 2018-8-22 01:26 , Processed in 0.023839 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表