
实现一个Comparator就可以了
代码如下:
import javautilArrays;
import javautilComparator;
public class ChineseSort {
public static void main(String[] args) {
String[] list = {
"丙方",
"乙方",
"甲方",
"辛方",
"戊方", };
Systemoutprintln("排序前: " + ArraystoString(list));
sort(list);
Systemoutprintln("排序后: " + ArraystoString(list));
}
public static void sort(String[] args) {
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return getIndex(o1) - getIndex(o2);
}
};
Arrayssort(args, comparator);
}
private static int getIndex(String s) {
for (int i = 0; i < DEFAULT_ARRAYlength; i++) {
if (sequals(DEFAULT_ARRAY[i])) {
return i;
}
}
throw new RuntimeException("输入文字错误");
}
private static final String[] DEFAULT_ARRAY = {
"甲方",
"乙方",
"丙方",
"丁方",
"戊方",
"己方",
"庚方",
"辛方",
"壬方",
"癸方" };
}
一、 程明明等人的论文:Salient Object Detection: A Surve(简单归纳了文章中的我认为比较重要的部分)
该论文旨在全面回顾突出显示目标检测的最新进展,并将其与其他密切相关领域(如通用场景分割,目标建议生成以及固定预测的显著性)相关联。主要内容涉及i)根源,关键概念和任务,ii)核心技术和主要建模趋势,以及iii)显著性物体检测中的数据集和评估指标。讨论并提出了未来的研究反向等开放性问题。
1介绍
1.1 什么是显著性物体
提到一般认为,良好的显著性检测模型应至少满足以下三个标准:1)良好的检测:丢失实际显著区域的可能性以及将背景错误地标记为显著区域应该是低的;2)高分辨率:显著图应该具有高分辨率或全分辨率以准确定位突出物体并保留原始图像信息;3)计算效率:作为其他复杂过程的前端,这些模型应该快速检测显著区域。
13显著物体检测历史
(1)Itti等人提出的最早、经典的的显著模型。例如[24]一文掀起了跨认知心理学、神经科学和计算机视觉等多个学科的第一波热潮。
(2)第二波热潮由刘等人的[25],[55]和Achanta等人的[56]掀起,他们将显著性检测定义为二元分割问题,自此出现了大量的显著性检测模型。
(3)最近出现了第三波热潮,卷积神经网络(CNN)[69],特别是引入完全卷积神经网络[70]。与基于对比线索的大多数经典方法不同[1],基于CNN的方法消除了对手工特征的需求减轻了对中心偏见知识的依赖,因此被许多科研人员所采用。基于CNN的模型通常包含数十万个可调参数和具有可变感受野大小的神经元。神经元具有较大的接受范围提供全局信息,可以帮助更好地识别图像中最显著的区域。CNN所能实现前所未有的性能使其逐渐成为显著性物体检测的主流方向。
2 现状调查
本节主要回顾三部分内容:1)显著性物体检测模型;2)应用;3)数据集。
21 经典模型(非常详细)
211 具有内在线索的基于块的模型
有两个缺点:1)高对比度边缘通常突出而不是突出物体;2)凸显物体的边界不能很好地保存。为了克服这些问题,一些方法提出基于区域来计算显著性。两个主要优点:1)区域的数量远少于区块的数量,这意味着开发高效和快速算法的潜力;2)更多的信息功能可以从区域中提取,领先以更好的表现。
212 具有内在线索的基于区域的模型(图4)
基于区域的显著性模型的主要优势:1)采用互补先验,以提高整体性能,这是主要优势;2)与像素和色块相比,区域提供更复杂的线索(如颜色直方图),以更好地捕捉场景的显著对象;3)由于图像中的区域数量远小于像素数量,因此在生成全分辨率显著图时,区域级别的计算显著性可以显著降低计算成本。
213 具有外部线索的模型(图5)
214 其他经典模型(图6)
局部化模型、分割模型、监督模式与无监督模式、聚合和优化模型
22 基于深度学习的模型
221 基于CNN(经典卷积网络)的模型
CNN大大降低了计算成本,多级特征允许CNN更好地定位检测到显著区域的边界,即使存在阴影或反射。但CNN特征的空间信息因为使用了MLP(多层感知器)而无法保留。
222 基于FCN(完全卷积网络)的模型
该模型具有保存空间信息的能力,可实现点对点学习和端到端训练策略,与CNN相比大大降低了时间成本。但在具有透明物体的场景、前景和背景之间的相同对比度以及复杂的背景等情况无法检测显著物体。
元素: PI=像素,PA=补丁,PE=区域,前缀m和h分别表示多尺度和分层版本。
假设: CP=中心先验,G=全局对比度,L=局部对比度,ED=边缘密度,B=背景先验,F=先验焦点,O=先验物体,CV=先验凸度,CS=中心环绕对比度,CLP=先验颜色,SD空间分布,BC=边界连通之前,SPS=稀疏噪声。
聚合/优化: LN=线性,NL=非线性,AD=自适应,RI=分层,BA=贝叶斯,GMRF=高斯MRF,EM=能量最小化,LS=最小二乘解
线索 :GT=地面真值注释,SI=相似图像,TC=时间线索,SCO=显著性实现,DP=深度,LF=光场。
对于显著性假设 : P=通用属性,PRA=预注意线索,HD=高维特征空间中的判别性,SS=显著性相似性,CMP=显著性提示的互补,SP=采样概率,MCO=运动相干性,RP=重复性,RS=区域相似度,C=相应,DK=领域知识。
其他 : CRF=条件随机场,SVM=支持向量机,BDT=提升决策树,RF=随机森林
4 数据集和评估措施
41 显著对象检测数据集
早期的带有包围框的突出物体图像:MSRA-A和MSRA-B
使用像素方式的二进制掩码来注释显著对象:ASD和DUT-OMRON
具有复杂和杂乱背景中的多个对象的数据集:[22]、[23]、[26]
42 评估措施(5个)
用S表示归一化为[0,255]的预测显著图,G是显著对象的地面正式二进制掩模
(1) 精确召回(PR)。首先将显著图S转化为二进制掩码M,然后通过将M与地面真值G进行比较来计算Precission和Recall:
(2) F值:通常Precission和Recall都不能完全评估显著图的质量,为此提出F值作为Precission和Recall的非负权重的集权跳河平均:
(3) ROC(Receiver Operating Characteristic)曲线:是以假正率(FP_rate)和假负率(TP_rate)为轴的曲线
(4)ROC曲线下面积(AUC):AUC越大性能越好
(5) 平均绝对误差(MAE):进行更全面的比较。
图12,比较流行的显著性对象检测数据集:
二、 传统显著性检测内容补充(论文中的分类和自己平时习惯不一致,所以重新收集资料整理了一下)
常用显著性检测方法:
1 认知模型
几乎所有模型都直接或间接地受认知模型启发而来,其一大特点是与心理学和神经学相结合。Itti模型(使用三个特征通道:颜色、属性、方向)是这一类模型的代表,也是后来很多衍生模型的基础
2 信息论模型
本质是最大化来自所处视觉环境的信息,其中最有影响力的模型是AIM模型。
3 图论模型
基于图轮的显著性模型把眼动数据看成时间序列,使用了隐马尔科夫模型、动态贝叶斯网和条件随机场等方法。图模型可以对复杂的注意机制建模,因此能取得较好的预测能力,缺点在于模型的高复杂度,尤其涉及训练和可读性时。典型模型有:GBVS等
4 频域模型
基于频谱分析的显著性模型,形式简洁,易于解释和实现,并且在注意焦点预测和显著区域检测方面取得了很大的成功,但其生物合理性不是非常清楚。经典模型有:频谱残差的显著性检测模型(纯数学计算方法)。
参考资料链接:
>
42。图像预处理
审美评分,我们分配到的图像是一个基于
分析其空间结构与分布显着
地区和突出的形象线。其显着区域
检测是使用传统的算法进行。
检测其显着的地区发现的突出地区
以类似的方式是什么,在做重定位系统
对Setlur等。 [STR_05]。首先,我们部分的
同质补丁使用基于图形的分割技术
[FH04]。然后我们指定一个显着性值每imagepixel
基于一个低级别Itti等显着性评分。 [IKN98]。
在显着性评分,然后分配给每个补丁的平均
像素的,它包括显着性。突出补丁
然后扩大使用贪婪算法[STR_05]结合了
附近的补丁,有着相似的颜色直方图
产生较大的突出地区。
图4:检测突出的地区和突出线
图像(1)图1(a)(b)图
这是金山词霸翻译的 请参考
实现一个Comparator就可以了
代码如下:
import javautilArrays;
import javautilComparator;
public class ChineseSort {
public static void main(String[] args) {
String[] list = {
"丙方",
"乙方",
"甲方",
"辛方",
"戊方", };
Systemoutprintln("排序前: " + ArraystoString(list));
sort(list);
Systemoutprintln("排序后: " + ArraystoString(list));
}
public static void sort(String[] args) {
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return getIndex(o1) - getIndex(o2);
}
};
Arrayssort(args, comparator);
}
private static int getIndex(String s) {
for (int i = 0; i < DEFAULT_ARRAYlength; i++) {
if (sequals(DEFAULT_ARRAY[i])) {
return i;
}
}
throw new RuntimeException("输入文字错误");
}
private static final String[] DEFAULT_ARRAY = {
"甲方",
"乙方",
"丙方",
"丁方",
"戊方",
"己方",
"庚方",
"辛方",
"壬方",
"癸方" };
}
以上就是关于如何实现 itti算法全部的内容,包括:如何实现 itti算法、显著性检测综述(完整整理)、期待奇迹,帮我翻译下啊各位高手们等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)