91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .cpp
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-12-19
  • 語言: C/C++
  • 標(biāo)簽: 顯著性??FT??opencv??

資源簡介

圖像顯著性FT模型的代碼,希望對(duì)你有幫助

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
using?namespace?cv;
using?namespace?std;

void?BGR2Lab(Mat?srcImage?vector&?vlabImg);//BGR轉(zhuǎn)為Lab空間
void?GaussianSmooth(Mat&?singleImg);//高斯平滑

int?main()
{
Mat?srcImage?=?imread(“E:\\VS2010\\ScratchProject\\SalientDetection\\SalientDetectionFT\\10.jpg“);
Mat?srcImg(srcImage.size()CV_8UC3); //如果是灰度圖,則先轉(zhuǎn)換為3通道圖像
if(srcImage.channels()==1)
cvtColor(srcImagesrcImgCV_GRAY2BGR);
else
srcImg=srcImage.clone();
imshow(“原始圖像“??srcImg);?

//BGR轉(zhuǎn)為LAB通道
vector?vlabImg; //存放lab三通道的值
BGR2Lab(srcImgvlabImg);

//分別求LAB三通道的均值
vector?meanVal;
for(int?i?=?0;i {
Scalar?meanVals?=?mean(vlabImg[i]);
meanVal.push_back(meanVals.val[0]);?????????//求取LAB三通道的均值
}

//分別求LAB三通道的高斯濾波
GaussianSmooth(vlabImg[0]);
GaussianSmooth(vlabImg[1]);
GaussianSmooth(vlabImg[2]);

//求取顯著圖
Mat?tempImg(srcImg.size()CV_64FC1Scalar::all(meanVal[0]));
absdiff(vlabImg[0]meanVal[0]vlabImg[0]); //L通道的?|均值-高斯濾波|
pow(vlabImg[0]2vlabImg[0]); //對(duì)以上結(jié)果求平方根

tempImg.setTo(meanVal[1]);
absdiff(vlabImg[1]meanVal[1]vlabImg[1]);
pow(vlabImg[1]2vlabImg[1]);

tempImg.setTo(meanVal[2]);
absdiff(vlabImg[2]meanVal[2]vlabImg[2]);
pow(vlabImg[2]2vlabImg[2]);

Mat?salientMap(srcImg.size()CV_64FC1Scalar::all(0));
add(vlabImg[0]vlabImg[1]salientMap);
add(vlabImg[2]salientMapsalientMap);

//歸一化
normalize(salientMapsalientMap10CV_MINMAX);?
//double型圖像轉(zhuǎn)為uchar型圖像
Mat?salientImg(srcImg.size()CV_8UC1Scalar::all(0));
salientMap.convertTo(salientImgCV_8UC12550);

imshow(“salientImg“salientImg);

waitKey(0);
return?0;
}

void?BGR2Lab(Mat?srcImg?vector&?vlabImg)//BGR轉(zhuǎn)為Lab空間
{
Mat?initImg(srcImg.size()CV_64FC1Scalar::all(0));
for(int?i?=?0;?i {
vlabImg.push_back(initImg);//初始化vlabImg分別存放L?A?B?
}
Mat?LImg(srcImg.size()CV_64FC1Scalar::all(0));
Mat?AImg(srcImg.size()CV_64FC1Scalar::all(0));
Mat?BImg(srcImg.size()CV_64FC1Scalar::all(0));

for(int?i?=?0;?i? {
for(int?j?=?0;?j? {
int?sB?=?(int)srcImg.at(ij)[0];
int?sG?=?(int)srcImg.at(ij)[1];
int?sR?=?(int)srcImg.at(ij)[2];
//------------------------
//?sRGB?to?XYZ?conversion
//?(D65?illuminant?assumption)
//------------------------
double?R?=?(double)sR/255.0;
double?G?=?(double)sG/255.0;
double?B?=?(double)sB/255.0;

double?r?g?b;

if(R?<=?0.04045) r?=?(double)R/12.92;
else r?=?pow((R+0.055)/1.0552.4);
if(G?<=?0.04045) g?=?(double)G/12.92;
else g?=?pow((G+0.055)/1.0552.4);
if(B?<=?0.04045) b?=?(double)B/12.92;
else b?=?pow((B+0.055)/1.0552.4)

評(píng)論

共有 條評(píng)論