实验3 图像平滑实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sum = sum / 9;
newdata[j] = saturate_cast<uchar>(sum);
}
}
namedWindow("image");
namedWindow("newImage");
imshow("image", image);
imshow("newImage", newImage);
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("d:\\1.bmp", 0);
Mat newImage(image.size().height, image.size().width, CV_8UC1, Scalar(0));
实验3 图像平滑实验
一、实验目的
1.通过实验掌握图像去噪的基本方法;
2.学会根据情况选用不同方法。
二、实验内容及要求
1.实验内容
请在如下面方法中选择多个,完成图像去噪操作,并进行分析、比较。
(1)对静态场景的多幅图片取平均;
(2)空间域模板卷积(不同模板、不同尺寸);
三.
1.
// lab.cpp :定义控制台应用程序的入口点。
newImage = image.clone();
int k = 2, b = 0;
//方法3
//Mat_<uchar>::iterator it = image.begin<uchar>(), itEnd = image.end<uchar>();
//Mat_<uchar>::iterator newit = newImage.begin<uchar>();
uchar* data = image.ptr<uchar>(i);
uchar* dataNext = image.ptr<uchar>(i+1);
uchar* newdata = newImage.ptr<uchar>(i);
float sum = 0;
for (int j = 1;j<image.size().width-1;j++)
//for (; it != itEnd; ++it,newit++)
//*newit = saturate_cast<uchar>(*it * k + b);
////方法1
//for (int i = 0;i<image.size().height;i++)
//for (int j = 0;j<image.size().width;j++)
//{
//newImage.at<uchar>(i, j) = saturate_cast<uchar>(image.at<uchar>(i, j) * k+b);
//}
//方法二
for (int i = 1;i<image.size().height-1;i++)
{
uchar* dataPre= image.ptr<uchar>(i-1);
{
sum = 0;
sum += data[j] + data[j - 1] + data[j + 1];
sum += dataPre[j] + dataPre[j - 1] + dataPre[j + 1];
sum += dataNext[j] + dataNext[j - 1] + dataNext[j + 1];
//for (int j = 0;j<image.size().width;j++)
//{
//newImage.at<uchar>(i, j) = saturate_cast<uchar>(image.at<uchar>(i, j) * k+b);
//}
//方法二
for (int i = 0;i<image.size().height;i++)
waitKey();
return 0;
}
2.
图像平滑
// lab.cpp :定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
}
}
namedWindow("image");
namedWindow("newImage");
imshow("image", image);
imshow("newImage", newImage);
waitKey();
return 0;
}
四.
1.不同空间域卷积模板的滤波效果滤波的平滑程度不同,当空间域模板太小时,无法滤除噪点,当空间域模板太大时又会使得图像失真。
{
Mat image = imread("d:\\1.bmp", 0);
Mat newImage(image.size().height, image.size().width, CV_8UC1, Scalar(0));
int k = 2, b = 0;
//方法3
//Mat_<uchar>::iterator it = image.begin<uchar>(), itEnd = image.end<uchar>();
//Mat_<uchar>::iterator newit = newImage.begin<uchar>();
//for (; it != itEnd; ++it,newit++)
//*newit = saturate_cast<uchar>(*it * k + b);
////方法1
//for (int i = 0;i<image.size().height;i++)
2.如何把边缘部分与噪声部分区分开,只消除噪声是图像平滑的关键所在。
3.要求多幅图像的噪声点的分布不同,差别越大,效果越好
实验3 图像平滑实验
学校:天津科技大学
学院:计算机科学与技术
学号:15101220
姓名:岳泽健
指导老师:任德华
提交时间:2018年6月5日
{
uchar* data = image.ptr<uchar>(i);
uchar* newdata = newImage.ptr<uchar>(i);
for (int j = 0;j<image.size().width;j++)
{来自百度文库
newdata[j] = saturate_cast<uchar>(data[j] * k+b);
newdata[j] = saturate_cast<uchar>(sum);
}
}
namedWindow("image");
namedWindow("newImage");
imshow("image", image);
imshow("newImage", newImage);
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("d:\\1.bmp", 0);
Mat newImage(image.size().height, image.size().width, CV_8UC1, Scalar(0));
实验3 图像平滑实验
一、实验目的
1.通过实验掌握图像去噪的基本方法;
2.学会根据情况选用不同方法。
二、实验内容及要求
1.实验内容
请在如下面方法中选择多个,完成图像去噪操作,并进行分析、比较。
(1)对静态场景的多幅图片取平均;
(2)空间域模板卷积(不同模板、不同尺寸);
三.
1.
// lab.cpp :定义控制台应用程序的入口点。
newImage = image.clone();
int k = 2, b = 0;
//方法3
//Mat_<uchar>::iterator it = image.begin<uchar>(), itEnd = image.end<uchar>();
//Mat_<uchar>::iterator newit = newImage.begin<uchar>();
uchar* data = image.ptr<uchar>(i);
uchar* dataNext = image.ptr<uchar>(i+1);
uchar* newdata = newImage.ptr<uchar>(i);
float sum = 0;
for (int j = 1;j<image.size().width-1;j++)
//for (; it != itEnd; ++it,newit++)
//*newit = saturate_cast<uchar>(*it * k + b);
////方法1
//for (int i = 0;i<image.size().height;i++)
//for (int j = 0;j<image.size().width;j++)
//{
//newImage.at<uchar>(i, j) = saturate_cast<uchar>(image.at<uchar>(i, j) * k+b);
//}
//方法二
for (int i = 1;i<image.size().height-1;i++)
{
uchar* dataPre= image.ptr<uchar>(i-1);
{
sum = 0;
sum += data[j] + data[j - 1] + data[j + 1];
sum += dataPre[j] + dataPre[j - 1] + dataPre[j + 1];
sum += dataNext[j] + dataNext[j - 1] + dataNext[j + 1];
//for (int j = 0;j<image.size().width;j++)
//{
//newImage.at<uchar>(i, j) = saturate_cast<uchar>(image.at<uchar>(i, j) * k+b);
//}
//方法二
for (int i = 0;i<image.size().height;i++)
waitKey();
return 0;
}
2.
图像平滑
// lab.cpp :定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
}
}
namedWindow("image");
namedWindow("newImage");
imshow("image", image);
imshow("newImage", newImage);
waitKey();
return 0;
}
四.
1.不同空间域卷积模板的滤波效果滤波的平滑程度不同,当空间域模板太小时,无法滤除噪点,当空间域模板太大时又会使得图像失真。
{
Mat image = imread("d:\\1.bmp", 0);
Mat newImage(image.size().height, image.size().width, CV_8UC1, Scalar(0));
int k = 2, b = 0;
//方法3
//Mat_<uchar>::iterator it = image.begin<uchar>(), itEnd = image.end<uchar>();
//Mat_<uchar>::iterator newit = newImage.begin<uchar>();
//for (; it != itEnd; ++it,newit++)
//*newit = saturate_cast<uchar>(*it * k + b);
////方法1
//for (int i = 0;i<image.size().height;i++)
2.如何把边缘部分与噪声部分区分开,只消除噪声是图像平滑的关键所在。
3.要求多幅图像的噪声点的分布不同,差别越大,效果越好
实验3 图像平滑实验
学校:天津科技大学
学院:计算机科学与技术
学号:15101220
姓名:岳泽健
指导老师:任德华
提交时间:2018年6月5日
{
uchar* data = image.ptr<uchar>(i);
uchar* newdata = newImage.ptr<uchar>(i);
for (int j = 0;j<image.size().width;j++)
{来自百度文库
newdata[j] = saturate_cast<uchar>(data[j] * k+b);