-
大小: 5KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-06-14
- 語言: C/C++
- 標簽: opencv4.3.0??去霧??
資源簡介
基于暗通道先驗的去霧算法,去霧算法目前也有著眾多其他的方式,不過我所接觸的,很多都是以這個為基礎(chǔ),因此,先弄會這個為研究其他的去霧算法能奠定堅實的基礎(chǔ)。
代碼片段和文件信息
#include
#include
#include
#include
#include
#include?
using?namespace?cv;
using?namespace?std;
//求暗通道
Mat?darkChannel(Mat?src)
{
Mat?rgbmin?=?Mat::zeros(src.rows?src.cols?CV_8UC1);
Mat?dark?=?Mat::zeros(src.rows?src.cols?CV_8UC1);
Vec3b?intensity;
for?(int?m?=?0;?m {
for?(int?n?=?0;?n {
intensity?=?src.at(m?n);
rgbmin.at(m?n)?=?min(min(intensity.val[0]?intensity.val[1])?intensity.val[2]);
}
}
//模板尺寸
int?scale?=?7;
//cout?<“Please?enter?the?mask?scale:?“?< //cin?>>?scale;
//邊界擴充
int?radius?=?(scale?-?1)?/?2;
Mat?border;
//由于要求最小值,所以擴充的邊界可以用復制邊界填充
copyMakeBorder(rgbmin?border?radius?radius?radius?radius?BORDER_REPLICATE);
//最小值濾波
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
//選取興趣區(qū)域
Mat?roi;
roi?=?border(Rect(i?j?scale?scale));
//求興趣區(qū)域的最小值
double?minVal?=?0;?double?maxVal?=?0;
Point?minLoc?=?0;?Point?maxLoc?=?0;
minMaxLoc(roi?&minVal?&maxVal?&minLoc?&maxLoc?noArray());
dark.at(Point(i?j))?=?(uchar)minVal;
}
}
return?dark;
}
uchar?light(vector?inputIamgeMax)
{
uchar?maxA?=?0;
for?(int?i?=?0;?i? {
if?(maxA? {
maxA?=?inputIamgeMax[i?+?1];
}
}
return?maxA;
}
//Mat?dark(Mat?image)
//{
//??Mat?minColor(image.rows?image.cols?CV_8UC1?Scalar(180?120?50));
//??Mat?darkChannel(image.rows?image.cols?CV_8UC1?Scalar(180?120?50));
//
//??//求每個像素BGR三通道最小值
//??for?(int?i?=?0;?i?//??{
//??????for?(int?j?=?0;?j?//??????{
//??????????uchar?blue?green?red;
//??????????blue?=?image.at(Point(i?j))[0];
//??????????green?=?image.at(Point(i?j))[1];
//??????????red?=?image.at(Point(i?j))[2];
//??????????minColor.at(Point(i?j))?=?minBGR(blue?green?red);
//??????}
//??}
//
//??//模板尺寸
//??int?scale;
//??cout?<“Please?enter?the?mask?scale:?“?<//??cin?>>?scale;
//
//??//邊界擴充
//??int?radius?=?(scale?-?1)?/?2;
//??Mat?border;
//??//由于要求最小值,所以擴充的邊界可以用復制邊界填充
//??copyMakeBorder(minColor?border?radius?radius?radius?radius?BORDER_REPLICATE);
//
//??//最小值濾波
//??for?(int?i?=?0;?i?//??{
//??????for?(int?j?=?0;?j?//??????{
//??????????//選取興趣區(qū)域
//??????????Mat?roi;
//????????
- 上一篇:C++繼承,剪刀石頭布
- 下一篇:c語言程序設計_銷售管理系統(tǒng)
評論
共有 條評論