2005*二千2005农历六月十四是什么日子分之二千十三

2018俄罗斯世界杯_新浪体育_新浪网
啊哦~出了点小问题
微信公众号
24小时滚动播报最新的体育资讯,趣闻和视频
体育产业营销
发布体育产业资讯,聚合新浪体育营销资源
加载中,请稍后
点击加载更多当前位置:
>>>为2005年春节晚会上出现的一副对联的上联“八百里洞庭凭岳阳壮阔”..
为2005年春节晚会上出现的一副对联的上联“八百里洞庭凭岳阳壮阔”选配下联,最恰当的一项是(2分)A.五千年盛世欣太平今日B.两千年赤壁览黄鹤风流C.九万里中华创锦绣未来D.十三亿尧舜建古国文明
题型:单选题难度:偏易来源:不详
B了解对联常识,明确对联特点要求,如字数相等、词性相对、结构相应、节奏相合、平仄相协、内容相关等要素。
马上分享给同学
据魔方格专家权威分析,试题“为2005年春节晚会上出现的一副对联的上联“八百里洞庭凭岳阳壮阔”..”主要考查你对&&修辞方法&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
修辞手法:就是通过修饰、调整语句,运用特定的表达形式以提高语言表达作用的方式或方法。共有六十三大类,七十八小类。修辞是为适应特定的情境以及增强语言的表达效果,运用恰当的语言手段,以追求理想的表达效果的规律。主要使用修辞手法:比喻、拟人、夸张、对比、排比、对偶(又名对仗、排偶)、反复、借代、比拟(又名比体)、象征、寄寓(寄托),互文、设问、引用、呼告、反问、顶真(又名联珠、顶针)等。其中比喻可以分为:明喻、暗喻、借喻、博喻(又名复喻)、倒喻(又名逆喻)、反喻、互喻(又名回喻)、较喻(可分为强喻,弱喻)、譬喻、曲喻、饰喻、引喻、隐喻。其他特殊性描写方法:有白描,避复,变用,层递,衬垫(又名衬跌),衬托(正衬、反衬、陪衬),倒文,倒装,迭音,叠字,复叠,翻新,反复,反语,仿词,仿化,飞白,分承(又名并提、合叙、合说);复迭错综,复合偏义,共用,互体,换算,回环,回文,降用,借代,歧谬,摹绘(又分为:摹形,摹声,摹色),列锦,连及,警策,示现,双关,重言,重叠,指代,用典,移用,谐音,歇后,镶嵌,析字,委婉(又分为:迂回语、谦敬语、避讳语),婉曲,通感(又名移觉),移就,跳脱,转文,复沓,拈连(又称:顺拈)。常用的修辞方法:(1)比喻(明喻、暗喻、借喻):本体和喻体必须是本质不同的两类事物,本体和喻体必须有相似点。明喻是明显的比喻,它的本体,喻体和喻词都出现。例:海洋上卷起千万堆雪浪,简直就像那刚刚裂桃的大片棉花田。(喻词“像”,本体是“雪浪”,喻体是“棉花田”)暗喻从表面看是判断,叙述或说明,暗中包含着比喻关系,它的本体和喻体都出现,喻词由“好像,仿佛”变成了“是、成为”。例:十个被鲜血泡起的手指头肿的变成了大熊掌。(喻词“变成”,本体是“手指头”,喻体是“大熊掌”。)借喻的本体不出现,也不用喻词,而是把喻体直接用在本体应该出现的位置。例:其缺点是见树木不见森林,捡了芝麻、绿豆却丢了西瓜。(“树木”和“森林”比喻局部和整体)(2)借代:主要有特征代整体,部分代整体,专门代泛称,结果代原因,具体代抽象,作者代作品。例1:“先生,给现钱,袁世凯,不行吗?”此句用银元上的袁世凯头像代替银元。例2:你们杀死一个李公朴,会有千百个李公朴站起来!此句中第二个“李公朴”指主张民主正义的人士。(3)拟人:比拟的一种,把物当作人来写,使物人格化,赋予物以人的言行或思想感情。例如:波浪一边歌唱,一边冲向高空,去迎接那雷声。拟物:把人当做物来写,也就是使人具有物的状态或动作,或把甲物当做乙物来写。例如:他们看见不远的地方,那宽厚肥大的荷叶下面,有一个人的脸,下半截身子长在水里。(4)夸张:是为了更突出,鲜明地表达思想感情而有意言过其实的修辞格。按意义分类可以分为:扩大夸张、缩小夸张和超前夸张。(5)双关: ①谐音双关。利用音同或音近造成的双关。例如:我失骄杨君失柳,杨柳轻飘上重霄九。此句中的“杨柳”表面上指杨花柳絮,实际上指杨开慧和柳直旬二烈士。 ②语义双关。利用词语或句子在语境中形成的双重含义造成的双关是语义双关。例如:母亲和宏儿都睡着了。我躺着,听船底潺潺的水声,知道我在走我的路。句子中“知道我在走我的路”蕴含双重含义,表面上离开故乡,坐船走水路,同时也指“我”正在人生道路上走自己的路。(6)通感:叙事状物时运通词语,使不相通的感官感觉相互沟通起来的修辞格叫通感,也叫“移觉”。例如:微风过处,送来缕缕清香,仿佛远处高楼上渺茫的歌声似的。(朱自清《荷塘月色》)(7)对比:对比是将两个不同的事物或者相同事物中相反的两个方面放在一起进行比较的修辞格。例如:朱门酒肉臭,路有冻死骨。(8)对偶:用一对字数相等、结构相同的语句来表达相同、相关或相反的意思就是对偶。①正对:由意义相同或相似的前后两部分构成。例如:心血操碎,革命伟业似巍巍泰山震环宇;骨灰撒遍,总理恩情如滴滴雨露润人心。 ②反对。由意义相反或相对的前后两部分构成。例如:生当做人杰,死亦为鬼雄。 ③串对。也叫流水对,由意义上连贯递进、因果、条件等关系的前后两部分构成。例如:发展体育运动,增强人民体质。(9)反问:反问是通过疑问的句式激发人们思考,使人们得出自己的答案。反问是只问不答的,实际上反问的答案已经暗含在问话之中了。例如:如果说贪污和浪费是极大的犯罪,浪费和摧残人才不是更大的犯罪吗?(10)设问:设问采用自问自答的方式,首先自己提出问题,然后自己再回答问题。例如:什么事路?就是从没路的地方践踏出来的,从只有荆棘的地方开辟出来的。(11)顶真:是前后的几个语句之间,由相同的语言成分衔接上下两句,上递下接,使得结构紧密,语意连贯,声音流畅的一种修辞手法。顶针大部分是后一句的开头承接前一句的末尾的语言成分。①单联顶真。是指只有前后两句首位蝉联的顶真。例如:大雪压青松,青松挺且直。 ②串联顶真:是指三个或三个以上的句子首位蝉联的顶真。例如:这真是座火山啊。有山就有水,有水就有脉,有脉就有苗,难怪人家说下面埋着聚宝盆。(12)互文:指古代诗文上下文用的词语交错省略而又互相补充,交互见义并合起来表达一个完整的意思。 ①单句互文:即在同一个句子里出现的互文。例如:秦时明月汉时关。(王昌龄《出塞》)“秦”和“汉”是互文,此句应解释为“秦汉时的明月和边关”。主人下马客在船。(白居易《琵琶行》)“主人”和“客人”互文,主人和客人一同下了马,登上了船。②复合互文:指在相邻的句子中出现的互文。例如:将军百战死,壮士十年归。(《木兰诗》)此句“将军”和“战士”形成互文,意思是“将军很战士身经百战,大多流血牺牲了,只有少部分人征战多年才胜利归来”。(13)反复:有意地重复同一词语或句子以强调某个意思或抒发某种感情的辞格。 ①连续反复。接连重复相同的词语或句子,中间没有其他词语间隔。例如:唉!七毛钱竟买了你的生命——伱的血肉之躯竟抵不上区区七个小银元么?生命真太贱了!生命真太贱了! ②间隔反复:重复运用的词语或句子中间间隔其他词语或句子。例如:敌人把你的城镇变成了废墟你没有哭;敌人把你的国家烧成了灰,你没有哭;敌人杀死了你的亲人,你没有哭;敌人把你绑在大树上烧你、烤你,你没有哭;你真是一把拉不断的硬弓,一座烧不毁的金刚!此外连续反复和间隔反复可以交错使用。例如:沉默啊!沉默啊!不在沉默中爆发,就在沉默中灭亡。(14)排比:是用几个结构相似的并列语句,把相关的意思连续说出来的一种修辞手法。①句子成分的排比:例如:鲁迅是在文化战线上,代表全民族的大多数,向着敌人冲锋陷阵的最正确、最勇敢、最坚决、最忠实、最热忱的空前的民族英雄。此句是定语的排比。 ②句子或分句的排比:例如:第一个月来,咱们娘娘有说有笑;第二个月来,咱们娘娘不苟言笑;第三个月来,咱们娘娘不言不笑。这是三个分句的排比。(15)引用:指人们在口语交际或书面表达时,引用名言、典故。例如:裴多菲的“生命诚可贵,爱情价更高。若为自由故,两者皆可抛”说得很有道理。(16)反语:反语又称“倒反”、“反说”、“反辞”等,即通常所说的“说反话”,运用跟本意相反的词语来表达此意,却含有否定、讽刺以及嘲弄的意思,一般带有强烈的感情色彩的一种修辞。 修辞种类及作用:我们掌握修辞手法,在了解了其基本概念和表现形式外还应该知道常见修辞手法的特点及作用才能更好的应对各种试题的考验:1.比喻 (1)比喻的特点及作用比喻就是“打比方”。即抓住两种不同性质的事物的相似点,用一事物来喻另一事物。比喻的结构一般由本体(被比喻的事物)、喻体(作比方的事物)和比喻词(比喻关系的标志)构成。构成比喻的关键:甲和乙必须是本质不同的事物,甲乙之间必须有相似点,否则比喻不能成立。比喻的作用主要是:化平淡为生动;化深奥为浅显;化抽象为具体;化冗长为简洁。 (2)比喻的种类 ①明喻。典型形式是:甲像乙。本体喻体都出现,中间用比喻词“像、似、仿佛、犹如”等相联结。例如:收获的庄稼堆成垛,像稳稳矗立的小山。” ②暗喻。典型形式是:甲是乙。本体喻体都出现,中间没有比喻词,常用“是”、“成了”、“变成”等联结。例如:马克思主义和中国革命的关系,就是箭和靶的关系。 ③借喻。典型形式是:甲代乙。不出现本体,直接叙述喻体。但它不同于借代。借代取两事物相关点,借喻取两事物的相似点。例如:放下包袱,开动机器。 ④博喻。连用几个比喻从不同角度,运用不同的相似点对同一本体进行比喻。例如:层层的叶子中间,零星地点缀着些白花,有袅娜地开着的,有羞涩地打着朵儿的;正如一粒粒明珠,又如碧天里的星星,又如刚出浴的美人。(“明珠”、“星星”“刚出浴的美人”分别从色彩、光华、感受等角度,抓住光亮、隐约闪烁、清新洁静等相似点来描绘出荷花的美。) 2.比拟 (1)比拟的特点及作用 把物当作人来写,或把人当作物来写,或把此物当作彼物来写,其形式特点是:事物“人化”,或人“物化”,或甲物“乙物化”。其作用是使所写“人”或“物”色彩鲜明、描绘形象,表意丰富。 (2)比拟的种类 ①拟人。例如:杜甫川唱来柳林铺笑,红旗飘飘把手招。 ②拟物。例如:咱们老实,才有恶霸,咱们敢动刀,恶霸就得夹着尾巴跑。 3.借代 (1)借代的特点及其作用 借代不直接说出所要表述的人或事物,而用与其相关的事物来代替。它强调两事物间的相关点。其作用是以简代繁,以实代虚,以奇代凡,以事代情。 (2)借代的种类 ①特征代本体。例如:大胡子凶神恶煞地吼叫着。 ②具体代抽象。例如:不拿群众一针一线。 ③专名代泛称。例如:我们的时代需要千千万万个雷锋。 ④人名代著作。例如:我们要多读点鲁迅。 ⑤部分代整体。例如:吟罢低眉无写处,月光如水照缁衣。 ⑥结果代原因。例如:专弄文墨,为壮士捧腹。 ⑦原料代成品。例如:五十年间万事空,懒将白发对青铜。 ⑧地名代本体。例如:延安还是西安?要划清这种界限。 4.夸张 (1)夸张的特点及其作用夸张指为追求某种表达效果,对原有事物进行合乎情理的着意扩大或缩小。要求使用时不能失去生活的基础和根据,不能浮夸。其作用在于烘托气氛,增强联想,给人启示。 (2)夸张的几种形式&①、扩大夸张。例如:飞流直下三千尺,疑是银河落九天。&②、缩小夸张。例如:五岭逶迤腾细浪,乌蒙磅礴走泥丸。&③、超前夸张。例如:看见这样鲜绿的麦苗,就嗅出白面馍馍的香味来了。 5.对偶 (1)对偶的特点及其作用 对偶就是“对对子”,也称“对仗”。它必须是一对字数相等,词性相对,结构相同,意义相关的短语或句子。两句间的关系有承接、递进、因果、假设和条件等。其作用有:便于吟诵,有音乐美;表意凝炼,抒情酣畅。 (2)对偶的几种形式 ①依内容分可分为正对、反对、串对。 正对:上下句意思相似、相近、相补、相衬。 例如:天连五岭银锄落,地动三河铁臂摇。 反对:上下句意思相反、相对。例如:宜将剩勇追穷寇,不可沽名学霸王。 串对:又称“流水对”。上下句意思具有承接、递进、因果、假设、条件等关系。例如:为有牺牲多壮志,敢教日月换新天。 ②依形式分可分为工对、宽对。 所谓工对,就是字数、词性、结构、平仄、用字等严格按对仗要求;所谓宽对,就是基本符合对仗要求,但某些方面稍有出入。也就是说形式要求稍宽松一点。 ③依结构分可分为成分对偶和句子对偶。 成分对偶。例如:山水本无知,蝶雁亦无情;但它们对待人类最公平,一视同仁,即不因达官显贵而呈欢卖笑,也不因山野渔樵而吝丽啬彩。 句子对偶。例如:墙上芦苇,头重脚轻根底浅;山间竹笋,嘴尖皮厚腹中空。 6.排比 (1)排比的特点及其作用 排比由三个或三个以上结构相同或相似,内容相关、语气一致的短语或句子组合而成。常用强调的同一词语重复出现在各个短语或句子的同一位置上。其作用在于加强语势,强调内容,加重感情。 (2)排比的几种形式 ①成分排比。例如:好像失了东三省,党国倒愈像一个国,失了东三省谁也不响,党国倒愈像一个国,失了东三省只有几个学生上几篇“呈文”,党国倒愈像一个国,可以博得“友邦人士”的夸奖,永远“国”下去一样。 ②句子排比。例如:他们的品质是那样的纯洁和高尚,他们的意志是那样的坚韧和刚强,他们的气质是那样的淳朴和谦逊,他们的胸怀是那样的美丽和宽广。 7.设问 设问的特点及作用“无疑而问”。往往明知故问,自问自答或提出问题不需要确定答案。目的是强调问题,以引起人们注意,启发人们进行思考。例如:白色的花含有什么色素呢?白色的花什么色素也没有。 又如:社会生产力有这样巨大的发展,劳动生产率有这样大幅度的提高,* 的是什么?最主要的是*科学的力量、技术的力量。 8.反问 (1)反问的特点:也是“无疑而问”,用疑问句的形式表示确定的意思,以加强语气,增强表达效果,句末一般打问号,有的也可打感叹号。 (2)反问的形式有两种: ①用肯定的形式表示否定。例如:毛主席都是如此,我们还有什么可以骄傲的呢? ②用否定的形式表示肯定。例如:“难道不是我们劳动群众创造了人类世界吗?”含修辞的成语来源:比喻:冷若冰霜&&& 呆若木鸡&&& 浩如烟海&&& 轻如鸿毛&&& 如胶似漆&&& 挥金如土&&& 味同嚼蜡&归心似箭&&& 坚如磐石&&& 气喘如牛&&& 胆小如鼠&&& 如花似玉&&& 如履薄冰&&& 如坐针毡&如狼似虎&&& 从善如流&&& 繁花似锦&&& 视死如归&&& 小肚鸡肠&&& 多如牛毛& & 势如破竹拟人:狐朋狗友&&& 鸟语花香&&&& 百花争妍&& 兔死狐悲&&& 莺歌燕舞&&& 龙飞风舞&&& 春风得意鬼哭狼嚎&&&& 黔驴技穷&&& 山欢海笑&& 狗仗人势&& &狐假虎威&&& 龙争虎斗&&& 鸟哭猿啼夸张:一手遮天&&& 度日如年 & 一毛不拔&& 垂涎三尺&&&& 口若悬河&& 排山倒海&&& 日理万机怒发冲冠&&& 一日千里 & 一字千金&& &一步登天&& &震耳欲聋&& 人山人海&&& 人声鼎沸一落千丈&&& 一目十行& &人木三分&& &胆大包天&&&& 气吞山河&& 恨之入骨&& &挥汗如雨火冒三丈&&& 一尘不染&&& 泪如雨下&& &偷天换日&&& 咫尺天涯&& 多如牛毛&&& 弹丸之地借代:目不识丁&&& 披坚执锐&&& 迫在眉睫&&& 灯红酒绿&&& 咬文嚼字 & 青黄不接&& 手无寸铁汗马功劳&&& 名落孙山&&& 梁上君子&&& 片甲不留&&& 两袖清风&&& 千钧一发&&& 巾帼须眉
发现相似题
与“为2005年春节晚会上出现的一副对联的上联“八百里洞庭凭岳阳壮阔”..”考查相似的试题有:
930096796517788370469100199100277posts - 106,&
comments - 768,&
trackbacks - 0
&&&&& 图像二值化的目的是最大限度的将图象中感兴趣的部分保留下来,在很多情况下,也是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法,但如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果。
&&&& 在这些庞大的分类方法中,基于直方图的全局二值算法占有了绝对的市场份额,这些算法都从不同的科学层次提出了各自的实施方案,并且这类方法都有着一些共同的特点:
  1、简单;
&&&& 2、算法容易实现;
&&&&&3、执行速度快。
&&&& 本文摘取了若干种这类方法进行了介绍。
&&&& 一:灰度平局值值法:
  1、描述:即使用整幅图像的灰度平均值作为二值化的阈值,一般该方法可作为其他方法的初始猜想值。
  2、原理:   &
&&&&&  &&&&&
&&&&& 3、实现代码:
public static int GetMeanThreshold(int[] HistGram)
int Sum = 0, Amount = 0;
for (int Y = 0; Y & 256; Y++)
Amount += HistGram[Y];
Sum += Y * HistGram[Y];
return Sum / A
&&&& 二、百分比阈值(法)
于1962年提出的P-Tile (即P分位数法)可以说是最古老的一种阈值选取方法。该方法根据先验概率来设定阈值,使得二值化后的目标或背景像素比例等于先验概率,该方法简单高效,但是对于先验概率难于估计的图像却无能为力。
  2、该原理比较简单,直接以代码实现。
/// &summary&
/// 百分比阈值
/// &/summary&
/// &param name="HistGram"&灰度图像的直方图&/param&
/// &param name="Tile"&背景在图像中所占的面积百分比&/param&
/// &returns&&/returns&
public static int GetPTileThreshold(int[] HistGram, int Tile = 50)
int Y, Amount = 0, Sum = 0;
for (Y = 0; Y & 256; Y++) Amount += HistGram[Y];
for (Y = 0; Y & 256; Y++)
Sum = Sum + HistGram[Y];
if (Sum &= Amount * Tile / 100) return Y;
return -1;
&&&&&&三、基于谷底最小值的阈值
&&&&&1、描述:
  此方法实用于具有明显双峰直方图的图像,其寻找双峰的谷底作为阈值,但是该方法不一定能获得阈值,对于那些具有平坦的直方图或单峰图像,该方法不合适。
  2、实现过程:
  该函数的实现是一个迭代的过程,每次处理前对直方图数据进行判断,看其是否已经是一个双峰的直方图,如果不是,则对直方图数据进行半径为1(窗口大小为3)的平滑,如果迭代了一定的数量比如1000次后仍未获得一个双峰的直方图,则函数执行失败,如成功获得,则最终阈值取两个双峰之间的谷底值作为阈值。
&&&& 注意在编码过程中,平滑的处理需要当前像素之前的信息,因此需要对平滑前的数据进行一个备份。另外,首数据类型精度限制,不应用整形的直方图数据,必须转换为浮点类型数据来进行处理,否则得不到正确的结果。
&&&& 该算法相关参考论文如下:
 & J. M. S. Prewitt and M. L. Mendelsohn, "The analysis of cell images," innnals of the New York Academy of Sciences, vol. 128, pp. , 1966.&&&& C. A. Glasbey, "An analysis of histogram-based thresholding algorithms," CVGIP: Graphical Models and Image Processing, vol. 55, pp. 532-537, 1993.
&&&& 3、实现代码:
public static int GetMinimumThreshold(int[] HistGram)
int Y, Iter = 0;
double[] HistGramC = new double[256];
// 基于精度问题,一定要用浮点数来处理,否则得不到正确的结果
double[] HistGramCC = new double[256];
// 求均值的过程会破坏前面的数据,因此需要两份数据
for (Y = 0; Y & 256; Y++)
HistGramC[Y] = HistGram[Y];
HistGramCC[Y] = HistGram[Y];
// 通过三点求均值来平滑直方图
while (IsDimodal(HistGramCC) == false)
// 判断是否已经是双峰的图像了
HistGramCC[0] = (HistGramC[0] + HistGramC[0] + HistGramC[1]) / 3;
for (Y = 1; Y & 255; Y++)
HistGramCC[Y] = (HistGramC[Y - 1] + HistGramC[Y] + HistGramC[Y + 1]) / 3;
// 中间的点
HistGramCC[255] = (HistGramC[254] + HistGramC[255] + HistGramC[255]) / 3;
// 最后一点
System.Buffer.BlockCopy(HistGramCC, 0, HistGramC, 0, 256 * sizeof(double));
if (Iter &= 1000) return -1;
// 直方图无法平滑为双峰的,返回错误代码
// 阈值极为两峰之间的最小值
bool Peakfound = false;
for (Y = 1; Y & 255; Y++)
if (HistGramCC[Y - 1] & HistGramCC[Y] && HistGramCC[Y + 1] & HistGramCC[Y]) Peakfound = true;
if (Peakfound == true && HistGramCC[Y - 1] &= HistGramCC[Y] && HistGramCC[Y + 1] &= HistGramCC[Y])
return Y - 1;
return -1;
  其中IsDimodal函数为判断直方图是否是双峰的函数,代码如下:
private static bool IsDimodal(double[] HistGram)
// 检测直方图是否为双峰的
// 对直方图的峰进行计数,只有峰数位2才为双峰
int Count = 0;
for (int Y = 1; Y & 255; Y++)
if (HistGram[Y - 1] & HistGram[Y] && HistGram[Y + 1] & HistGram[Y])
if (Count & 2) return false;
if (Count == 2)
return true;
return false;
  4、效果:
        原图&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &二值图&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&& 原始直方图                平滑后的直方图
  对于这种有较明显的双峰的图像,该算法还是能取得不错的效果的。
&&&& 四、基于双峰平均值的阈值
&&&&&& 1、描述:
&  该算法和基于谷底最小值的阈值方法类似,只是最后一步不是取得双峰之间的谷底值,而是取双峰的平均值作为阈值。
&&&&&& 2、参考代码:
public static int GetIntermodesThreshold(int[] HistGram)
int Y, Iter = 0, I
double[] HistGramC = new double[256];
// 基于精度问题,一定要用浮点数来处理,否则得不到正确的结果
double[] HistGramCC = new double[256];
// 求均值的过程会破坏前面的数据,因此需要两份数据
for (Y = 0; Y & 256; Y++)
HistGramC[Y] = HistGram[Y];
HistGramCC[Y] = HistGram[Y];
// 通过三点求均值来平滑直方图
while (IsDimodal(HistGramCC) == false)
// 判断是否已经是双峰的图像了
HistGramCC[0] = (HistGramC[0] + HistGramC[0] + HistGramC[1]) / 3;
for (Y = 1; Y & 255; Y++)
HistGramCC[Y] = (HistGramC[Y - 1] + HistGramC[Y] + HistGramC[Y + 1]) / 3;
// 中间的点
HistGramCC[255] = (HistGramC[254] + HistGramC[255] + HistGramC[255]) / 3;
// 最后一点
System.Buffer.BlockCopy(HistGramCC, 0, HistGramC, 0, 256 * sizeof(double));
// 备份数据,为下一次迭代做准备
if (Iter &= 10000) return -1;
// 似乎直方图无法平滑为双峰的,返回错误代码
// 阈值为两峰值的平均值
int[] Peak = new int[2];
for (Y = 1, Index = 0; Y & 255; Y++)
if (HistGramCC[Y - 1] & HistGramCC[Y] && HistGramCC[Y + 1] & HistGramCC[Y]) Peak[Index++] = Y - 1;
return ((Peak[0] + Peak[1]) / 2);
&&&&& 3、效果:
       原图&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &二值图&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& 原始直方图                平滑后的直方图
&&& 五、迭代最佳阈值
  1、描述:
&&&&该算法先假定一个阈值,然后计算在该阈值下的前景和背景的中心值,当前景和背景中心值得平均值和假定的阈值相同时,则迭代中止,并以此值为阈值进行二值化。
&&& 2、实现过程:
  (1)求出图象的最大灰度值和最小灰度值,分别记为gl和gu,令初始阈值为:
&&&&&&&&&&&&&&&&&&& &&&
&&&&& (2) 根据阈值T0将图象分割为前景和背景,分别求出两者的平均灰度值Ab和Af:
  &&&&&&&     
&&&&& (3) 令
&&&&&&&&&&&&&&&&&&&& &&&&
    如果Tk=Tk+1,则取Tk为所求得的阈值,否则,转2继续迭代。
&&&& 3、参考代码:
public static int GetIterativeBestThreshold(int[] HistGram)
int X, Iter = 0;
int MeanValueOne, MeanValueTwo, SumOne, SumTwo, SumIntegralOne, SumIntegralT
int MinValue, MaxV
int Threshold, NewT
for (MinValue = 0; MinValue & 256 && HistGram[MinValue] == 0; MinValue++) ;
for (MaxValue = 255; MaxValue & MinValue && HistGram[MinValue] == 0; MaxValue--) ;
if (MaxValue == MinValue) return MaxV
// 图像中只有一个颜色
if (MinValue + 1 == MaxValue) return MinV
// 图像中只有二个颜色
Threshold = MinV
NewThreshold = (MaxValue + MinValue) && 1;
while (Threshold != NewThreshold)
// 当前后两次迭代的获得阈值相同时,结束迭代
SumOne = 0; SumIntegralOne = 0;
SumTwo = 0; SumIntegralTwo = 0;
Threshold = NewT
for (X = MinV X &= T X++)
//根据阈值将图像分割成目标和背景两部分,求出两部分的平均灰度值
SumIntegralOne += HistGram[X] * X;
SumOne += HistGram[X];
MeanValueOne = SumIntegralOne / SumO
for (X = Threshold + 1; X &= MaxV X++)
SumIntegralTwo += HistGram[X] * X;
SumTwo += HistGram[X];
MeanValueTwo = SumIntegralTwo / SumT
NewThreshold = (MeanValueOne + MeanValueTwo) && 1;
//求出新的阈值
if (Iter &= 1000) return -1;
  4、效果:
& &&&&& & &&&&&& &
&& &&&&& &&&&&& & &
   &&  原图&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&二值图&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&直方图 
&& 六、OSTU大律法
  1、描述:
&&&&&& 该算法是1979年由日本大津提出的,主要是思想是取某个阈值,使得前景和背景两类的类间方差最大,matlab中的graythresh即是以该算法为原理执行的。
&&&&&& 2、原理:
&&&&&&&关于该算法的原理,网络上有很多,这里为了篇幅有限,不加以赘述。
&&&&&& 3、参考代码:
public static int GetOSTUThreshold(int[] HistGram)
int X, Y, Amount = 0;
int PixelBack = 0, PixelFore = 0, PixelIntegralBack = 0, PixelIntegralFore = 0, PixelIntegral = 0;
double OmegaBack, OmegaFore, MicroBack, MicroFore, SigmaB, S
// 类间方差;
int MinValue, MaxV
int Threshold = 0;
for (MinValue = 0; MinValue & 256 && HistGram[MinValue] == 0; MinValue++) ;
for (MaxValue = 255; MaxValue & MinValue && HistGram[MinValue] == 0; MaxValue--) ;
if (MaxValue == MinValue) return MaxV
// 图像中只有一个颜色
if (MinValue + 1 == MaxValue) return MinV
// 图像中只有二个颜色
for (Y = MinV Y &= MaxV Y++) Amount += HistGram[Y];
PixelIntegral = 0;
for (Y = MinV Y &= MaxV Y++) PixelIntegral += HistGram[Y] * Y;
SigmaB = -1;
for (Y = MinV Y & MaxV Y++)
PixelBack = PixelBack + HistGram[Y];
PixelFore = Amount - PixelB
OmegaBack = (double)PixelBack / A
OmegaFore = (double)PixelFore / A
PixelIntegralBack += HistGram[Y] * Y;
PixelIntegralFore = PixelIntegral - PixelIntegralB
MicroBack = (double)PixelIntegralBack / PixelB
MicroFore = (double)PixelIntegralFore / PixelF
Sigma = OmegaBack * OmegaFore * (MicroBack - MicroFore) * (MicroBack - MicroFore);
if (Sigma & SigmaB)
SigmaB = S
Threshold = Y;
  4、效果:
& && && &&&& &
  该算法对于那些具有平坦的直方图的图像具有一定的适应能力。
&&&&&&七、一维最大熵
&&&&& 1、描述:
&&&&&& 该算法把信息论中熵的概念引入到图像中,通过计算阈值分割后两部分熵的和来判断阈值是否为最佳阈值。
&&&&& 2、算法原理
&&&&&& 这方面的文章也比较多,留给读者自行去查找相关资料。
&&&&&& 3、参考代码:&
public static int Get1DMaxEntropyThreshold(int[] HistGram)
X, Y,Amount=0;
double[] HistGramD = new double[256];
double SumIntegral, EntropyBack, EntropyFore, MaxE
int MinValue = 255, MaxValue = 0;
int Threshold = 0;
for (MinValue = 0; MinValue & 256 && HistGram[MinValue] == 0; MinValue++) ;
for (MaxValue = 255; MaxValue & MinValue && HistGram[MinValue] == 0; MaxValue--) ;
if (MaxValue == MinValue) return MaxV
// 图像中只有一个颜色
if (MinValue + 1 == MaxValue) return MinV
// 图像中只有二个颜色
for (Y = MinV Y &= MaxV Y++) Amount += HistGram[Y];
for (Y = MinV Y &= MaxV Y++)
HistGramD[Y] = (double)HistGram[Y] / Amount+1e-17;
MaxEntropy = double.MinV ;
for (Y = MinValue + 1; Y & MaxV Y++)
SumIntegral = 0;
for (X = MinV X &= Y; X++) SumIntegral += HistGramD[X];
EntropyBack = 0;
for (X = MinV X &= Y; X++) EntropyBack += (-HistGramD[X] / SumIntegral * Math.Log(HistGramD[X] / SumIntegral));
EntropyFore = 0;
for (X = Y + 1; X &= MaxV X++) EntropyFore += (-HistGramD[X] / (1 - SumIntegral) * Math.Log(HistGramD[X] / (1 - SumIntegral)));
if (MaxEntropy & EntropyBack + EntropyFore)
Threshold = Y;
MaxEntropy = EntropyBack + EntropyF
&&&&&八、力矩保持法&&&&& 1、描述:
  该算法通过选择恰当的阈值从而使得二值后的图像和原始的灰度图像具有三个相同的初始力矩值。
  2、原理:
&&  参考论文:W. Tsai, &Moment-preserving thresholding: a new approach,& Comput.Vision Graphics Image Process., vol. 29, pp. 377-393, 1985.
&&&& 由于无法下载到该论文(收费的),仅仅给出从其他一些资料中找到的公式共享一下。
&&&&&&&&&&& &
&&& 其中的A\B\C的函数可见代码部分。
&& 3、参考代码:
public static byte GetMomentPreservingThreshold(int[] HistGram)
int X, Y, Index = 0, Amount=0;
double[] Avec = new double[256];
double X2, X1, X0, M
for (Y = 0; Y &= 255; Y++) Amount += HistGram[Y];
for (Y = 0; Y & 256; Y++) Avec[Y] = (double)A(HistGram, Y) / A
// The threshold is chosen such that A(y,t)/A(y,n) is closest to x0.
// The following finds x0.
X2 = (double)(B(HistGram, 255) * C(HistGram, 255) - A(HistGram, 255) * D(HistGram, 255)) / (double)(A(HistGram, 255) * C(HistGram, 255) - B(HistGram, 255) * B(HistGram, 255));
X1 = (double)(B(HistGram, 255) * D(HistGram, 255) - C(HistGram, 255) * C(HistGram, 255)) / (double)(A(HistGram, 255) * C(HistGram, 255) - B(HistGram, 255) * B(HistGram, 255));
X0 = 0.5 - (B(HistGram, 255) / A(HistGram, 255) + X2 / 2) / Math.Sqrt(X2 * X2 - 4 * X1);
for (Y = 0, Min = double.MaxV Y & 256; Y++)
if (Math.Abs(Avec[Y] - X0) & Min)
Min = Math.Abs(Avec[Y] - X0);
Index = Y;
return (byte)I
private static double A(int[] HistGram, int Index)
double Sum = 0;
for (int Y = 0; Y &= I Y++)
Sum += HistGram[Y];
private static double B(int[] HistGram, int Index)
double Sum = 0;
for (int Y = 0; Y &= I Y++)
Sum += (double)Y * HistGram[Y];
private static double C(int[] HistGram, int Index)
double Sum = 0;
for (int Y = 0; Y &= I Y++)
Sum += (double)Y * Y * HistGram[Y];
private static double D(int[] HistGram, int Index)
double Sum = 0;
for (int Y = 0; Y &= I Y++)
Sum += (double)Y * Y * Y * HistGram[Y];
&&& 对于很多图像,该算法也能取得比较满意的结果。
&& 九、基于模糊集理论的阈值
&&& 该算法的具体分析可见:
&&& 此法也借用香农熵的概念,该算法一般都能获得较为理想的分割效果,不管是对双峰的还是单峰的图像。
& 十、Kittler最小错误分类法
&&& 由于精力有限,以下几种算法仅仅给出算法的论文及相关的代码。
&&& 该算法具体的分析见:
, J & Illingworth, J (1986), "Minimum error thresholding", Pattern Recognition 19: 41-47
public static int GetKittlerMinError(int[] HistGram)
int MinValue, MaxV
int PixelBack, PixelF
double OmegaBack, OmegaFore, MinSigma, Sigma, SigmaBack, SigmaF
for (MinValue = 0; MinValue & 256 && HistGram[MinValue] == 0; MinValue++) ;
for (MaxValue = 255; MaxValue & MinValue && HistGram[MinValue] == 0; MaxValue--) ;
if (MaxValue == MinValue) return MaxV
// 图像中只有一个颜色
if (MinValue + 1 == MaxValue) return MinV
// 图像中只有二个颜色
Threshold = -1;
MinSigma = 1E+20;
for (Y = MinV Y & MaxV Y++)
PixelBack = 0; PixelFore = 0;
OmegaBack = 0; OmegaFore = 0;
for (X = MinV X &= Y; X++)
PixelBack += HistGram[X];
OmegaBack = OmegaBack + X * HistGram[X];
for (X = Y + 1; X &= MaxV X++)
PixelFore += HistGram[X];
OmegaFore = OmegaFore + X * HistGram[X];
OmegaBack = OmegaBack / PixelB
OmegaFore = OmegaFore / PixelF
SigmaBack = 0; SigmaFore = 0;
for (X = MinV X &= Y; X++) SigmaBack = SigmaBack + (X - OmegaBack) * (X - OmegaBack) * HistGram[X];
for (X = Y + 1; X &= MaxV X++) SigmaFore = SigmaFore + (X - OmegaFore) * (X - OmegaFore) * HistGram[X];
if (SigmaBack == 0 || SigmaFore == 0)
if (Threshold == -1)
Threshold = Y;
SigmaBack = Math.Sqrt(SigmaBack / PixelBack);
SigmaFore = Math.Sqrt(SigmaFore / PixelFore);
Sigma = 1 + 2 * (PixelBack * Math.Log(SigmaBack / PixelBack) + PixelFore * Math.Log(SigmaFore / PixelFore));
if (Sigma & MinSigma)
MinSigma = S
Threshold = Y;
  从实际的运行效果看,该算法并不很好。
  十一:ISODATA(也叫做intermeans法)
  参考论文:
// Also called intermeans
// Iterative procedure based on the isodata algorithm [T.W. Ridler, S. Calvard, Picture
// thresholding using an iterative selection method, IEEE Trans. System, Man and
// Cybernetics, SMC-8 (2.]
// The procedure divides the image into objects and background by taking an initial threshold,
// then the averages of the pixels at or below the threshold and pixels above are computed.
// The averages of those two values are computed, the threshold is incremented and the
// process is repeated until the threshold is larger than the composite average. That is,
threshold = (average background + average objects)/2
// The code in ImageJ that implements this function is the getAutoThreshold() method in the ImageProcessor class.
// From: Tim Morris (dtm@ap.co.umist.ac.uk)
// Subject: Re: Thresholding method?
// posted to sci.image.processing on
// The algorithm implemented in NIH Image sets the threshold as that grey
// value, G, for which the average of the averages of the grey values
// below and above G is equal to G. It does this by initialising G to the
// lowest sensible value and iterating:
// L = the average grey value of pixels with intensities & G
// H = the average grey value of pixels with intensities & G
// is G = (L + H)/2?
// yes =& exit
// no =& increment G and repeat
// There is a discrepancy with IJ because they are slightly different methods
public static int GetIsoDataThreshold(int[] HistGram)
int i, l, toth, totl, h, g = 0;
for (i = 1; i & HistGram.L i++)
if (HistGram[i] & 0)
g = i + 1;
while (true)
for (i = 0; i & i++)
totl = totl + HistGram[i];
l = l + (HistGram[i] * i);
for (i = g + 1; i & HistGram.L i++)
toth += HistGram[i];
h += (HistGram[i] * i);
if (totl & 0 && toth & 0)
if (g == (int)Math.Round((l + h) / 2.0))
if (g & HistGram.Length - 2)
&&&&&& 十二、
public static int GetShanbhagThreshold(int[] HistGram)
int first_
double tot_
/* total entropy */
double min_
/* max entropy */
double ent_ /* entropy of the background pixels at a given threshold */
double ent_
/* entropy of the object pixels at a given threshold */
double[] norm_histo = new double[HistGram.Length]; /* normalized histogram */
double[] P1 = new double[HistGram.Length]; /* cumulative normalized histogram */
double[] P2 = new double[HistGram.Length];
int total = 0;
for (ih = 0; ih & HistGram.L ih++)
total += HistGram[ih];
for (ih = 0; ih & HistGram.L ih++)
norm_histo[ih] = (double)HistGram[ih] /
P1[0] = norm_histo[0];
P2[0] = 1.0 - P1[0];
for (ih = 1; ih & HistGram.L ih++)
P1[ih] = P1[ih - 1] + norm_histo[ih];
P2[ih] = 1.0 - P1[ih];
/* Determine the first non-zero bin */
first_bin = 0;
for (ih = 0; ih & HistGram.L ih++)
if (!(Math.Abs(P1[ih]) & 2.313E-16))
first_bin =
/* Determine the last non-zero bin */
last_bin = HistGram.Length - 1;
for (ih = HistGram.Length - 1; ih &= first_ ih--)
if (!(Math.Abs(P2[ih]) & 2.313E-16))
last_bin =
// Calculate the total entropy each gray-level
// and find the threshold that maximizes it
threshold = -1;
min_ent = Double.MaxV
for (it = first_ it &= last_ it++)
/* Entropy of the background pixels */
ent_back = 0.0;
term = 0.5 / P1[it];
for (ih = 1; ih &= ih++)
ent_back -= norm_histo[ih] * Math.Log(1.0 - term * P1[ih - 1]);
ent_back *=
/* Entropy of the object pixels */
ent_obj = 0.0;
term = 0.5 / P2[it];
for (ih = it + 1; ih & HistGram.L ih++)
ent_obj -= norm_histo[ih] * Math.Log(1.0 - term * P2[ih]);
ent_obj *=
/* Total entropy */
tot_ent = Math.Abs(ent_back - ent_obj);
if (tot_ent & min_ent)
min_ent = tot_
threshold =
&&&& 十三、Yen法
  参考论文:
&&&&&1) Yen J.C., Chang F.J., and Chang S. (1995) "A New Criterion& for Automatic Multilevel Thresholding" IEEE Trans. on Image& Processing, 4(3): 370-378&&&& 2) Sezgin M. and Sankur B. (2004) "Survey over Image Thresholding Techniques and Quantitative Performance Evaluation" Journal of& Electronic Imaging, 13(1): 146-165
&&&&&& 参考代码(未整理):
// M. Emre Celebi
// 06.15.2007
// Ported to ImageJ plugin by G.Landini from E Celebi's fourier_0.8 routines
public static int GetYenThreshold(int[] HistGram)
double max_
double[] norm_histo = new double[HistGram.Length]; /* normalized histogram */
double[] P1 = new double[HistGram.Length]; /* cumulative normalized histogram */
double[] P1_sq = new double[HistGram.Length];
double[] P2_sq = new double[HistGram.Length];
int total = 0;
for (ih = 0; ih & HistGram.L ih++)
total += HistGram[ih];
for (ih = 0; ih & HistGram.L ih++)
norm_histo[ih] = (double)HistGram[ih] /
P1[0] = norm_histo[0];
for (ih = 1; ih & HistGram.L ih++)
P1[ih] = P1[ih - 1] + norm_histo[ih];
P1_sq[0] = norm_histo[0] * norm_histo[0];
for (ih = 1; ih & HistGram.L ih++)
P1_sq[ih] = P1_sq[ih - 1] + norm_histo[ih] * norm_histo[ih];
P2_sq[HistGram.Length - 1] = 0.0;
for (ih = HistGram.Length - 2; ih &= 0; ih--)
P2_sq[ih] = P2_sq[ih + 1] + norm_histo[ih + 1] * norm_histo[ih + 1];
/* Find the threshold that maximizes the criterion */
threshold = -1;
max_crit = Double.MinV
for (it = 0; it & HistGram.L it++)
crit = -1.0 * ((P1_sq[it] * P2_sq[it]) & 0.0 ? Math.Log(P1_sq[it] * P2_sq[it]) : 0.0) + 2 * ((P1[it] * (1.0 - P1[it])) & 0.0 ? Math.Log(P1[it] * (1.0 - P1[it])) : 0.0);
if (crit & max_crit)
max_crit =
threshold =
&&&&&&一行很多代码是摘自开源软件ImageJ的资料,读者也可以参考:&&这里获得更多的信息。
&&&&& 最后,我对这些算法的做了简单的UI界面,供有兴趣的读者参考。
&&&&& 工程代码下载:
*********************************作者: laviewpbt & 时间: && &&&&联系QQ: & &转载请保留本行信息************************
阅读(...) 评论()}

我要回帖

更多关于 路易十三酒多少钱 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信