資源簡介
本段代碼共提供了三種濾波方式進行去噪:中值濾波,均值濾波,高斯濾波。通過效果圖對比可以比較三種方式優劣。
代碼片段和文件信息
#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? {
for?(j?=?1;?j? {
junzhiimg.at(j?i)[0]?=?(1.0?/?9)*(orgimg.at(j?-?1?i?-?1)[0]
+?orgimg.at(j?-?1?i)[0]?+?orgimg.at(j?-?1?i?+?1)[0]
+?orgimg.at(j?i?-?1)[0]?+?orgimg.at(j?i)[0]
+?orgimg.at(j?i?+?1)[0]?+?orgimg.at(j?+?1?i?-?1)[0]
+?orgimg.at(j?+?1?i)[0]?+?orgimg.at(j?+?1?i?+?1)[0]);
//田字格的均值賦予均值值········圖像的0通道
junzhiimg.at(j?i)[1]?=?(1.0?/?9)*(orgimg.at(j?-?1?i?-?1)[1]
+?orgimg.at(j?-?1?i)[1]?+?orgimg.at(j?-?1?i?+?1)[1]
+?orgimg.at(j?i?-?1)[1]?+?orgimg.at(j?i)[1]
+?orgimg.at(j?i?+?1)[1]?+?orgimg.at(j?+?1?i?-?1)[1]
+?orgimg.at(j?+?1?i)[1]?+?orgimg.at(j?+?1?i?+?1)[1]);
//田字格的均值賦予均值值········圖像的1通道
junzhiimg.at(j?i)[2]?=?(1.0?/?9)*(orgimg.at(j?-?1?i?-?1)[2]
+?orgimg.at(j?-?1?i)[2]?+?orgimg.at(j?-?1?i?+?1)[2]
+?orgimg.at(j?i?-?1)[2]?+?orgimg.at(j?i)[2]
+?orgimg.at(j?i?+?1)[2]?+?orgimg.at(j?+?1?i?-?1)[2]
+?orgimg.at(j?+?1?i)[2]?+?orgimg.at(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? {
for?(j?=?1;?j? {
temp[0]?=?orgimg.at(j?-?1?i?-?1)[0];
temp[1]?=?orgimg.at(j?-?1?i)[0];
temp[2]?=?orgimg.at(j?-?1?i?+?1)[0];
temp[3]?=?orgimg.at(j?i?-?1)[0];
temp[4]?=?orgimg.at(j?i)[0];
temp[5]?=?orgimg.at(j?i?+?1)[0];
temp[6]?=?orgimg.at(j?+?1?i?-?1)[0];
temp[7]?=?orgimg.at(j?+?1?i)[0];
temp[8]?=?orgimg.at(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(j?i)[0]?=?temp[4];
temp[0]?=?orgimg.at(j?-?1?i?-?1)[1];
temp[1]?=?orgimg.at(j?-?1?i)[1];
temp[2]?=?orgimg.at(j?
- 上一篇:計算機圖形學大作業 二維圖形變換
- 下一篇:C++ 開發大全基礎篇PDF掃描版
評論
共有 條評論