开源图像算法(MBAIFA)-显著性检测

显著性检测

包括:AC,BMS,FT,(GMR),HC,(ITTI), LC,  MBP,  MSS,  PHOT,  (RC),  (Rudinac), (SF),  (SR)。

 

 

下面是简单的AC列子,其他的类似,不再截图。

第一步:打开软件

第二步:“新建”,“+”,选择第“1”步,双击“读取”算子,选择图片以及彩色模式

第三步:“+”,选择第“2”步,双击“AC”算子。

第四步:点击“全部”,会显示一张opencv的图片,你可以看到相应的效果。这里AC算法暂时没有输入参数。

所有的算法都在AL目录下面,所有的算法都在相应类的函数convert里,列如“AC”对应的是ALSAC,您如果想使用相关的处理,直接复制相应的代码即可。


void CALSAC::calculateSaliencyMap(Mat *src, Mat * dst)
{
	Mat img3f;
	(*src).convertTo(img3f, CV_32FC3, 1.0 / 255);
	Mat sal(img3f.size(), CV_32F), MeanR1, MeanR2;
	GaussianBlur(img3f, MeanR1, Size(3, 3), -1);
	cvtColor(MeanR1, MeanR1, CV_BGR2Lab);

	int Width = img3f.cols, Height = img3f.rows;
	int R1 = 0, Scale = 3;
	if (R1 > 0)                                                                    //    如果R1=0,则表示就取原始像素
		blur(MeanR1, MeanR1, Size(R1, R1), Point(-1, -1));
	int  MinR2 = min(Width, Height) / 8, MaxR2 = min(Width, Height) / 2;

	for (int Z = 0; Z < Scale; Z++)
	{
		MeanR1.copyTo(MeanR2);
		int radius = (MaxR2 - MinR2) * Z / (Scale - 1) + MinR2;
		if (radius % 2 == 0)
			radius++;
		blur(MeanR2, MeanR2, Size(radius, radius), Point(-1, -1));
		//MeanR2.convertTo();
		for (int r = 0; r < Height; r++)
		{
			float *s = sal.ptr<float>(r);
			float *lab = MeanR1.ptr<float>(r);
			float *lab2 = MeanR2.ptr<float>(r);
			for (int c = 0; c < Width; c++, lab += 3, lab2 += 3)
			{

				s[c] += sqrt((float)(sqr(lab2[0] - lab[0]) + sqr(lab2[1] - lab[1]) + sqr(lab2[2] - lab[2])));
			}

		}
	}

	normalize(sal, *dst, 0, 1, NORM_MINMAX);
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值