• 大小: 8KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: C/C++
  • 标签: 滤波  去噪  

资源简介

本段代码共提供了三种滤波方式进行去噪:中值滤波,均值滤波,高斯滤波。通过效果图对比可以比较三种方式优劣。

资源截图

代码片段和文件信息

#include 
#include 
#include
#include 
#include 

using namespace cv;
using namespace std;


int main()
{
Mat normimg orgimg junzhiimg zhongzhiimg gaussimg;
normimg = imread(“14.jpg“);
orgimg = imread(“噪声图片.jpg“);
int col = orgimg.cols row = orgimg.rows;
int i j;
junzhiimg.create(row col CV_8UC3);
zhongzhiimg.create(row col CV_8UC3);
gaussimg.create(row col CV_8UC3);


for (i = 1; i < col - 1; i++)
{
for (j = 1; j < row - 1; j++)
{
junzhiimg.at< Vec3b>(j i)[0] = (1.0 / 9)*(orgimg.at< Vec3b>(j - 1 i - 1)[0]
+ orgimg.at< Vec3b>(j - 1 i)[0] + orgimg.at< Vec3b>(j - 1 i + 1)[0]
+ orgimg.at< Vec3b>(j i - 1)[0] + orgimg.at< Vec3b>(j i)[0]
+ orgimg.at< Vec3b>(j i + 1)[0] + orgimg.at< Vec3b>(j + 1 i - 1)[0]
+ orgimg.at< Vec3b>(j + 1 i)[0] + orgimg.at< Vec3b>(j + 1 i + 1)[0]);
//田字格的均值赋予均值值········图像的0通道


junzhiimg.at< Vec3b>(j i)[1] = (1.0 / 9)*(orgimg.at< Vec3b>(j - 1 i - 1)[1]
+ orgimg.at< Vec3b>(j - 1 i)[1] + orgimg.at< Vec3b>(j - 1 i + 1)[1]
+ orgimg.at< Vec3b>(j i - 1)[1] + orgimg.at< Vec3b>(j i)[1]
+ orgimg.at< Vec3b>(j i + 1)[1] + orgimg.at< Vec3b>(j + 1 i - 1)[1]
+ orgimg.at< Vec3b>(j + 1 i)[1] + orgimg.at< Vec3b>(j + 1 i + 1)[1]);
//田字格的均值赋予均值值········图像的1通道

junzhiimg.at< Vec3b>(j i)[2] = (1.0 / 9)*(orgimg.at< Vec3b>(j - 1 i - 1)[2]
+ orgimg.at< Vec3b>(j - 1 i)[2] + orgimg.at< Vec3b>(j - 1 i + 1)[2]
+ orgimg.at< Vec3b>(j i - 1)[2] + orgimg.at< Vec3b>(j i)[2]
+ orgimg.at< Vec3b>(j i + 1)[2] + orgimg.at< Vec3b>(j + 1 i - 1)[2]
+ orgimg.at< Vec3b>(j + 1 i)[2] + orgimg.at< Vec3b>(j + 1 i + 1)[2]);

//田字格的均值赋予均值值········图像的2通道
}
}//缺点就是不能处理边缘的像素

namedWindow(“原图“ WINDOW_NORMAL);
imshow(“原图“ normimg);
namedWindow(“噪声图“ WINDOW_NORMAL);
imshow(“噪声图“ orgimg);
namedWindow(“均值滤波“ WINDOW_NORMAL);
imshow(“均值滤波“ junzhiimg);


int m n temp1;
int temp[9];
for (i = 1; i < col - 1; i++)
{
for (j = 1; j < row - 1; j++)
{
temp[0] = orgimg.at< Vec3b>(j - 1 i - 1)[0];
temp[1] = orgimg.at< Vec3b>(j - 1 i)[0];
temp[2] = orgimg.at< Vec3b>(j - 1 i + 1)[0];
temp[3] = orgimg.at< Vec3b>(j i - 1)[0];
temp[4] = orgimg.at< Vec3b>(j i)[0];
temp[5] = orgimg.at< Vec3b>(j i + 1)[0];
temp[6] = orgimg.at< Vec3b>(j + 1 i - 1)[0];
temp[7] = orgimg.at< Vec3b>(j + 1 i)[0];
temp[8] = orgimg.at< Vec3b>(j + 1 i + 1)[0];
for (m = 0; m < 9; m++)
{
for (n = 0; n < 9 - m - 1; n++)
{
if (temp[n]>temp[n + 1])
{
temp1 = temp[n + 1];
temp[n + 1] = temp[n];
temp[n] = temp1;
}
}
}//·········冒泡法排序···········
zhongzhiimg.at< Vec3b>(j i)[0] = temp[4];

temp[0] = orgimg.at< Vec3b>(j - 1 i - 1)[1];
temp[1] = orgimg.at< Vec3b>(j - 1 i)[1];
temp[2] = orgimg.at< Vec3b>(j 

评论

共有 条评论