简单的图像显著性区域特征提取方法-----opencv实现LC,AC,FT
https://blog.csdn.net/cai13160674275/article/details/72991049?locationNum=7&fps=1
四种简单的图像显著性区域特征提取方法-----> AC/HC/LC/FT。
- void SalientRegionDetectionBasedonLC(Mat &src){
- int HistGram[256]={0};
- int row=src.rows,col=src.cols;
- int gray[row][col];
- //int Sal_org[row][col];
- int val;
- Mat Sal=Mat::zeros(src.size(),CV_8UC1 );
- Point3_<uchar>* p;
- for (int i=0;i<row;i++){
- for (int j=0;j<col;j++){
- p=src.ptr<Point3_<uchar> > (i,j);
- val=(p->x + (p->y) *2 + p->z)/4;
- HistGram[val]++;
- gray[i][j]=val;
- }
- }
- int Dist[256];
- int Y,X;
- int max_gray=0;
- int min_gray=1<<28;
- for (Y = 0; Y < 256; Y++)
- {
- val = 0;
- for (X = 0; X < 256; X++)
- val += abs(Y - X) * HistGram[X]; // 论文公式(9),灰度的距离只有绝对值,这里其实可以优化速度,但计算量不大,没必要了
- Dist[Y] = val;
- max_gray=max(max_gray,val);
- min_gray=min(min_gray,val);
- }
- for (Y = 0; Y < row; Y++)
- {
- for (X = 0; X < col; X++)
- {
- Sal.at<uchar>(Y,X) = (Dist[gray[Y][X]] - min_gray)*255/(max_gray - min_gray); // 计算全图每个像素的显著性
- //Sal.at<uchar>(Y,X) = (Dist[gray[Y][X]])*255/(max_gray); // 计算全图每个像素的显著性
- }
- }
- imshow("sal",Sal);
- waitKey(0);
- }
2.AC算法也挺有意思,利用了类似图像金字塔算法,在不同纬度(具体实现是用大小不同的均值滤波器过滤图像)与标准图像做差并累加,然后归一化,实现如下:
- void SalientRegionDetectionBasedonAC(Mat &src,int MinR2, int MaxR2,int Scale){
- Mat Lab;
- cvtColor(src, Lab, CV_BGR2Lab);
- int row=src.rows,col=src.cols;
- int Sal_org[row][col];
- memset(Sal_org,0,sizeof(Sal_org));
- Mat Sal=Mat::zeros(src.size(),CV_8UC1 );
- Point3_<uchar>* p;
- Point3_<uchar>* p1;
- int val;
- Mat filter;
- int max_v=0;
- int min_v=1<<28;
- for (int k=0;k<Scale;k++){
- int len=(MaxR2 - MinR2) * k / (Scale - 1) + MinR2;
- blur(Lab, filter, Size(len,len ));
- for (int i=0;i<row;i++){
- for (int j=0;j<col;j++){
- p=Lab.ptr<Point3_<uchar> > (i,j);
- p1=filter.ptr<Point3_<uchar> > (i,j);
- //cout<<(p->x - p1->x)*(p->x - p1->x)+ (p->y - p1->y)*(p->y-p1->y) + (p->z - p1->z)*(p->z - p1->z) <<" ";
- val=sqrt( (p->x - p1->x)*(p->x - p1->x)+ (p->y - p1->y)*(p->y-p1->y) + (p->z - p1->z)*(p->z - p1->z) );
- Sal_org[i][j]+=val;
- if(k==Scale-1){
- max_v=max(max_v,Sal_org[i][j]);
- min_v=min(min_v,Sal_org[i][j]);
- }
- }
- }
- }
- cout<<max_v<<" "<<min_v<<endl;
- int X,Y;
- for (Y = 0; Y < row; Y++)
- {
- for (X = 0; X < col; X++)
- {
- Sal.at<uchar>(Y,X) = (Sal_org[Y][X] - min_v)*255/(max_v - min_v); // 计算全图每个像素的显著性
- //Sal.at<uchar>(Y,X) = (Dist[gray[Y][X]])*255/(max_gray); // 计算全图每个像素的显著性
- }
- }
- imshow("sal",Sal);
- waitKey(0);
- }
SalientRegionDetectionBasedonAC(test,test.rows/8,test.rows/2,3);
- void SalientRegionDetectionBasedonFT(Mat &src){
- Mat Lab;
- cvtColor(src, Lab, CV_BGR2Lab);
- int row=src.rows,col=src.cols;
- int Sal_org[row][col];
- memset(Sal_org,0,sizeof(Sal_org));
- Point3_<uchar>* p;
- int MeanL=0,Meana=0,Meanb=0;
- for (int i=0;i<row;i++){
- for (int j=0;j<col;j++){
- p=Lab.ptr<Point3_<uchar> > (i,j);
- MeanL+=p->x;
- Meana+=p->y;
- Meanb+=p->z;
- }
- }
- MeanL/=(row*col);
- Meana/=(row*col);
- Meanb/=(row*col);
- GaussianBlur(Lab,Lab,Size(3,3),0,0);
- Mat Sal=Mat::zeros(src.size(),CV_8UC1 );
- int val;
- int max_v=0;
- int min_v=1<<28;
- for (int i=0;i<row;i++){
- for (int j=0;j<col;j++){
- p=Lab.ptr<Point3_<uchar> > (i,j);
- val=sqrt( (MeanL - p->x)*(MeanL - p->x)+ (p->y - Meana)*(p->y-Meana) + (p->z - Meanb)*(p->z - Meanb) );
- Sal_org[i][j]=val;
- max_v=max(max_v,val);
- min_v=min(min_v,val);
- }
- }
- cout<<max_v<<" "<<min_v<<endl;
- int X,Y;
- for (Y = 0; Y < row; Y++)
- {
- for (X = 0; X < col; X++)
- {
- Sal.at<uchar>(Y,X) = (Sal_org[Y][X] - min_v)*255/(max_v - min_v); // 计算全图每个像素的显著性
- //Sal.at<uchar>(Y,X) = (Dist[gray[Y][X]])*255/(max_gray); // 计算全图每个像素的显著性
- }
- }
- imshow("sal",Sal);
- waitKey(0);
- }
简单的图像显著性区域特征提取方法-----opencv实现LC,AC,FT的更多相关文章
- 四种比较简单的图像显著性区域特征提取方法原理及实现-----> AC/HC/LC/FT。
laviewpbt 2014.8.4 编辑 Email:laviewpbt@sina.com QQ:33184777 最近闲来蛋痛,看了一些显著性检测的文章,只是简单的看看,并没有深入的研究,以 ...
- 四种简单的图像显著性区域特征提取方法-----AC/HC/LC/FT。
四种简单的图像显著性区域特征提取方法-----> AC/HC/LC/FT. 分类: 图像处理 2014-08-03 12:40 4088人阅读 评论(4) 收藏 举报 salient regio ...
- 图像局部显著性—点特征(SURF)
1999年的SIFT(ICCV 1999,并改进发表于IJCV 2004,本文描述):参考描述:图像特征点描述. 参考原文:SURF特征提取分析 本文有大量删除,如有疑义,请参考原文. SURF对SI ...
- 基于qml创建最简单的图像处理程序(3)-使用opencv&qml进行图像处理
<基于qml创建最简单的图像处理程序>系列课程及配套代码基于qml创建最简单的图像处理程序(1)-基于qml创建界面http://www.cnblogs.com/jsxyhelu/p/83 ...
- Python下opencv使用笔记(二)(简单几何图像绘制)
简单几何图像一般包含点.直线.矩阵.圆.椭圆.多边形等等.首先认识一下opencv对像素点的定义. 图像的一个像素点有1或者3个值.对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值.他们表现出 ...
- 图像局部显著性—点特征(GLOH)
基于古老的Marr视觉理论,视觉识别和场景重建的基础即第一阶段为局部显著性探测.探测到的主要特征为直觉上可刺激底层视觉的局部显著性--特征点.特征线.特征块. 相关介绍:局部特征显著性-点特征(SIF ...
- 图像显著性论文(一)—A Model of saliency Based Visual Attention for Rapid Scene Analysis
这篇文章是图像显著性领域最具代表性的文章,是在1998年Itti等人提出来的,到目前为止引用的次数超过了5000,是多么可怕的数字,在它的基础上发展起来的有关图像显著性论文更是数不胜数,论文的提出主要 ...
- Python用Pillow(PIL)进行简单的图像操作
Python用Pillow(PIL)进行简单的图像操作 颜色与RGBA值 计算机通常将图像表示为RGB值,或者再加上alpha值(通透度,透明度),称为RGBA值.在Pillow中,RGBA的值表示为 ...
- 图像的全局特征--HOG特征、DPM特征
HOG特征:方向梯度直方图(Histogram of Oriented Gradient,)特征是一种全局图像特征描述子. 它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM ...
随机推荐
- 前端文档汇总(含代码规范、开发流程、知识分享,持续更新) front-end-Doc
https://juejin.im/post/5b1205b1f265da6e1a602a62 https://juejin.im/post/5b1205b1f265da6e1a602a62 http ...
- 网络基础之2——TCP/IP参考模型
本内容主要来源于<看透Spring MVC源码分析与实践——韩路彪>一书 BS结构网络传输的分解方式有两种: 1.OSI参考模型. 2.TCP/IP参考模型. OSI和TCP/IP分层模型 ...
- nginx的访问控制
一.基于Basic Auth认证与基于IP的访问控制 一.基于Basic Auth认证 Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要输入正确的用户名和密码之后 ...
- 19-Python3 函数
def area(width,heigh): return width*heigh def print_wecome(name): print('welcome',name) print('Runoo ...
- [LeetCode] 329. Longest Increasing Path in a Matrix_Hard tag: Dynamic Programming, DFS, Memoization
Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...
- golang配置
配置使用yaml,使用了github上一个configor的库.理由如下: 1. 支持多种格式 2. ORM,自动给变量赋值,不用写太多的代码 3. 但是他支持shell env配置,我怕与运行的环境 ...
- Linux 文件 目录结构探索
测试机用的是亚马逊云免费的那款,Amazon Linux AMI EC. 里面的Comment 在图上没有办法看,不过都是从网络上收录的,可以自行搜索. 目录 / 下面的目录 bin cgroup e ...
- python开源数据库gadfly安装排除错误
从sourceforge.net上下载的,结果需要仔细看网页才能找到下载地址.下载zip包,它没有把下载地址放在显眼的地方. 安照提示,python setup.py结果提示出错.看帮助文件,需要运行 ...
- vue父子组件写法,数据传递,顺便封装 element-ui的弹窗组建
父组件如下: <template> <div class="print"> <el-button @click="bbclick" ...
- QT 添加 lib库
扒自网友文章: 一.添加第三方的头文件 首先,添加头文件 #include "ControlCAN.h" 然后,再将这个头文件放到工程的目录下 二.添加.lib文件 首先,将.l ...