科学网

 找回密码
  注册

tag 标签: 分水岭

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

关于兰郎公路“黄河长江分水岭”标示牌位置的商榷
ghzcljz 2018-10-1 11:22
关于兰郎公路“黄河长江分水岭”标示牌位置的商榷 《甘南报》编辑同志: 我们是尕海则岔保护区管理局的工作人员,最近去尕海保护站时看到安置在尕海乡尕秀村附近兰郎 370KM+300M 和 371KM+300M 公路上的两块大型标示牌,标示为“黄河长江分水岭”,但实际上,标示牌两侧的径流全部进入黄河最大的支流——洮河,使人觉得标示牌的位置不太准确,容易给人造成错觉。 经过查对 1 : 5 万地形图,我们觉得分水岭标示牌放在郎木寺乡贡坝村以东兰郎公路处较为恰当。 目前的位置在 I 48 E101002 (尕秀)地形图纵横坐标 18252.10 , 3818.55 处;建议调整到 I 48 E 012003 (郎木寺乡)地形图纵横坐标 18276.15 , 3783.08 处。 请贵报联系有关部门并进行商榷。 李俊臻 2005 年 5 月 2 日 说明:发出商榷信后不久,标示牌搬走了。
2121 次阅读|0 个评论
流在分水岭上的河——水骑分水岭
热度 10 jiasf 2015-3-15 03:54
常言水往低处走,河流一般都在地形最低洼的地方流,而分水岭是分割相邻流域的山岭或较高的地方,会有河在分水岭流的吗? 答案是肯定的,而且流在分水岭的一条河流还非常有名——黄河! 黄河是淮河流域和海河流域的分水岭。黄河的河床底部要高过其大堤外地面几米到十几米,更比淮河、海河的高程高几十米。 黄河之所以形成分水岭、流在分水岭,是因为黄河泥沙的淤积。为了防止洪水泛滥,泥沙淤积越多,大堤修的愈高,如此反复,经过若干年,终于使黄河变成了横亘在华北平原上的悬河,成为淮河和海河的分水岭,造成了举世闻名的大河在分水岭上奔流的奇观。 黄河悬河 除了黄河这样的多泥沙河流易形成平原悬河而流在分水岭上,还有另一类成因很不相同的流在山区分水岭上的河。 那是在真正的山区分水岭上,当分水岭的地形是马鞍形,即在分水线方向中间低、两边高时,两边高处如果还有河流汇来,河流在分水岭处位置的稍稍变动就会改变河流汇入的流域,有时甚至改变了所汇入的海洋。山区坡度较陡的河流往往携带较粗的沙石,在坡度较缓的马鞍部堆积,促使河流改变方向、分叉,使得上部来水或者频繁改变汇入的流域,或者同时分别流入了不同的流域,而分叉同时流入两条下游河流是经常的——水骑分水岭,一水走两江! 山岭上的分水岭分叉河流,给流域范围的划分提出了一个问题:这样的河流到底属于哪个流域?虽然这样的河流一般不大,对大流域范围的划分影响较小,但总是一个需要考虑的问题,尤其对较小的流域尺度进行分析时更必须考虑。 下图是帕米尔高原一处山区分水岭、一源汇两河的实例。流到分水岭分岔的源头小河有十几公里长。好在这里分别流向东西两边的河流最后都汇入了阿姆河,最终流入咸海。 下图是东昆仑山的一处实例,一条小河的分岔,向西北流入柴达木河的上源,进入柴达木盆地,向东南则流入黄河、汇到渤海。
个人分类: 科普|12159 次阅读|25 个评论
一句老话
热度 4 hcy98765 2014-4-11 12:29
一 句 老 话 过去有一句老话,是说:对待人民群众的态度问题,是真假马克思主义者和真假共产党人的试金石和分水岭。不知道这句话现在还灵不?看来应该还灵,要不然习总书记为什么要搞群众路线教育呢?只是,但愿这次不要像在此之前搞的什么“三奖”教育、”保险”教育那样,越搞越糟 糕,腐败”愈演愈烈”(总书记语);而是使我们的领导干部在灵魂深处切切实实受到教育,端正观念,转变作风,像焦裕禄同志那样,尊重群众,相信群 众,联系群众,依靠群众,一切为了群众,全心全意为人民群众服务,为绝大多数人而不是只为个人和极少数人谋利益。 这样,我们的社会就会变得真正和谐,我们的中国梦就容易实现了。
1416 次阅读|13 个评论
我对恶性肿瘤及健康的一些理解
热度 2 chinese1man 2014-2-27 16:48
<引子>:四十岁是人生的分水岭,四十岁之前的人多数壮怀激烈,思慕着建功立业;而四十岁之后的人生,则多半和健康有关,我最近经历了一些事情,对这个规律日趋认识。四十岁是人生丰收的季节,四十岁是收获功名利禄还是一身是病,除了先天后天那些不可避免的冥冥中的因素外,也主要靠自己的主观能动性。最近接触一位有文学才华的晚期青年癌症患者,读了她生病后所写的一些文字,深为震撼。她的文字使得作为临床医生的我得以了解到患者的内心世界,所以写下如下文字,与健康人和青年人分享我对癌症这种疾病的一些看法!   它被称为“万病之王”,一位印度裔美国医生专门写了一本书,讲述它的历史。我虽然也有写这个题材的想法,但是由于时间和学识的缘故,还是暂时没有动笔。想着,总有一天得闲的时候,一定好好动笔写写这个我工作中一直在致力理解和驯服的强悍对手。   “癌魔”这个词,也许更能贴切表达人们对“它”既憎恨又恐惧的无奈心态。在它的肆虐下,美女红颜不再,陈晓旭佳人含恨;一代富豪殒命,王均瑶英年早逝。一部《此生未完成》,诉说了复旦女教师于娟博士的多少离愁别恨,曾让我一夜将此书读完的她写出了多少肿瘤患病者的悲伤和遗憾。   前几天,受邀列席一个癌症幸存者的聚会活动,很为晚期癌症幸存者们的乐观精神所鼓舞。他们多数都是经历了很多次难熬的抗肿瘤治疗后幸存下来的,但是目前的精神风貌还是非常积极的。一位原中山医学院的老毕业生甚至鼓动大家自称为“健友”,而不是“病友”。作为到场的专科医生,我听后深有感触,在主办方的要求下也讲了几句话,叙说我从事肿瘤专业十余年来的一些感悟和认识。   癌症研究是现代生物科学中的一个黑洞,经历了无数曲折,至今仍是迷雾缭绕。动物试验和临床流行病学,细胞生物学的研究虽然明确了“癌”的某些生物学特征,基因组学也进一步明确了这些特征的细节,但是离全面揭示“癌”的真实面目还是遥遥无期。在可以预见的未来,“癌”仍然将是人类健康的超级杀手。   癌的可怕在于它静悄悄地发生,几乎在早期毫无症状和不适,所以大多数癌发现时候已经是中晚期的全身播散,现有的医学干预手段回天乏力。还有一个可怕之处,即使是很小直径的临床早期癌,也有全身扩散的可能,而且扩散到全身的癌细胞未必和原发灶中的癌细胞具有相同的生物学特征,且这些扩散大都是借现代医学检查设备难以发现的,所以被临床医生称为早期。   随着后基因组时代对细胞生物学演化过程的深入认识,多数学者认为癌症发生的主要生物学基础已经明确。加州大学旧金山分校I. Craig Henderson教授在一本乳腺癌专著中如是说:癌的发生是在基因突变基础上由一系列诱因环境促发的一种生命负现象。类似观点目前已经得到多数医学家和生物学家的广泛认同。癌的发生其实是一个很长时间渐渐演变的过程,至少数年,或许几十年,或许是几代人。在漫长的基因序列的变化积累中,最终出现第一个有活力的突变细胞,这个突变细胞没有被机体的免疫系统俘获(当时机体处于特殊的状态),突变细胞起初是增生,病理性增生不断加剧直至演变到现代病理学定义的所谓“原位癌”阶段。原位癌又经过了复杂或许是漫长的演化,最终开始爆发性生长和浸润性扩散。最后阶段,癌细胞原位增殖或者游弋至全身潜伏或出现症状,称为亚临床或者临床病灶。在患者有主观症状之时,癌细胞往往已经成“星星之火,可以燎原。”之势,现代医学干预手段多数已经回天乏力。   多数患者是在癌细胞演变到具有浸润性或者转移性病灶的时候才开始关注个人健康问题的。在癌的早期漫长的发展阶段多数人是无知觉的。就在我打下以上这些字的时候,至少一成目前貌似健康人的体内已经在潜伏着癌细胞了。吸烟嗜酒、熬夜无度、精神不安均会通过神经免疫内分泌机制破坏人体内环境,使得癌细胞微环境适宜于癌细胞生长演化和无度增殖,一旦癌细胞的内功修炼完毕,获得飞檐走壁的轻功和一招致命的硬功,就可能最终要了那些貌似健康的人的命。   癌症的可怕还在于死亡方式的可怕!癌症一旦肆意漫延,就如硫酸腐蚀着人体的器官和组织,几乎没有它们不能攻击的区域。患上癌症的人经历的痛苦或许比地狱里无数酷刑还要残酷。对于疼痛,于娟描述到即使是床被轻轻地碰一下都会感觉浑身剧痛,疼的死去活来,浑身冒汗。气促,窒息到一次次死去,昏迷再神奇般地醒来。恐惧,恐惧到抛下父母爱人子女,一跳而下,甚至是割腕自杀。而医学所能扮演的角色就是缓解上帝的魔咒,给那些无以解脱的不幸人体一些药物来减轻些痛苦。吗啡,因其有效性几乎成为癌症姑息医学的标志。   癌症还有一种可怕是治疗手段的毒性。手术带来形体的毁损和机能的残疾,放射线和原子弹的释放物属于同一种类,化疗药物本来是用来进行化学战争的毒物;经典的三大手段无一不是戴着狰狞的面具轮番上场。如果没有医学人文,现代肿瘤医学将是最为恐怖的一门临床学科!   健康是金子般的宝贵,然而被大多数拥有她的人们忽视了!爱情诚可贵,健康价更高,若为生命故,或许皆可抛!在生命受到死亡威胁的关键时刻,人往往才能体会到生命的美好。多数人会模式健康的存在和缓慢流失,而肿瘤病房里那些悲喜离欢的故事或许早已成为肿瘤科医生们在医院里熟视无睹的场景了吧!   最后模仿网上无名氏的一段经典段子最为结尾吧!   人生如战场,你很难预测自己何时会被子弹击中。人生又是比赛场,上半场浮华艳丽,学历、金钱、美色、房子、家庭、权力、职位、事业等酒色财气名利欲望轮番轰炸;下半场简单纯净,运动、营养、淡泊、自律比拼谁更健康,谁的生活有质量!只有那些做得好的人才会最大限度地避免瘫痪、猝死、以及由癌症导致的悲惨死,并获取人生最大限度的价值和幸福。
个人分类: 探索历程|3844 次阅读|2 个评论
35岁是个分水岭
热度 2 chemistryche 2013-7-7 11:47
现在流行一种说法:出名要趁早。本人今年刚过35,感觉余生的发展路径已然清晰可见(经不起折腾了)。小的时候经常在一些文章里看到柳青的名言:“人生的道路虽然漫长,但紧要处常常只有几步,特别是当人年轻的时候。”,当时由于没有生活阅历,对这句话体会不是很深刻。现在明白了这个道理,但人已到中年了。哎!为什么真理总是来得太迟?
2377 次阅读|3 个评论
刘志军将成为中国反腐的标尺和分水岭
热度 1 dulizhi95 2013-6-12 07:40
刘志军将成为中国反腐的标尺和分水岭 一个团体,若要拥有战斗力,必须具有严明的纪律和必要时使用无情打击手段的坚强意志。 我党当年之所以能从小到大,由弱变强,并最终打败蒋委座的八百万美式大军,正是基于这样的力量,而蒋介石作为国党领袖之所以败给了毛泽东,也正是源于他的人情味和市侩气。 不妨举两个典型的例子:山东战场,李天霞为保存实力,畏缩不前,坐观友军被歼,甚至是以一种故意的幸灾乐祸的心态为之,致整个战局全面失利。蒋介石暴怒,逮之准备“问斩”。然李天霞“有钱”,能活动,蒋最后竟因说情者众而将李天霞无罪开释。另一个例子当然就是蒋公子的上海打虎了。 以国人之德行,作为团体领袖的蒋介石如此人情味和市侩气,再加上他自己及其四大家族带头贪腐,团体之衰败就是必然的了。 而毛泽东作为人民领袖之所以强大并深受爱戴,就在于他: 1 ,没有因人情世故而干扰大政治的市侩气, 2 ,没有让我的后代让我的亲人朋友同僚同类多弄些钱,以过好日子的市侩气,并让这样的市侩气干扰甚至主导大政治的运作。 毛时代以及毛当权之前的时期,我党对待党内政治上的犯规者或曰失势者,从来就是严酷打击,毫不留情。毛之后,此点似乎招致微词。然正是这一点乃是维系我党强大战斗力的根本保证。 毛之后至新世纪初,我党对待腐败分子的打击也是严酷的和有力的。许多网民可能不赞同我的这一论断。我仅提示两点,各位不妨看一看: 1 ,被毙掉的贪官数目, 2 ,此点更能说明问题:大量贪官都是老婆孩子一起抓一起重判。仅举一小例:当年四川交通厅长郑道访被逮,因老婆孩子参与收钱,故一起抓一起重判,并致郑的老母活活气死,其老婆之母服毒自杀的结果。贪官的如此后果,够惨的吧。 新世纪初到现在,则是腐败领域人和钱质和量的大爆炸。 若能以诛杀刘志军为标志,持续下去,则刘案将显示新领导严厉打击和整治腐败的坚强决心,成为我党反腐的分水岭,必将起到重新提振之作用,否则,呵呵,某家我马上准备观看 NBA 总决赛。
1441 次阅读|1 个评论
神奇的海南分界洲岛(1)
热度 35 zhangyuxiu 2013-2-14 09:29
神奇的海南分界洲岛(1)
百度介绍 , 分界洲岛所处位置是海南岛重要的分水岭。该岛是牛岭的一部分,牛岭南北气候大异。在这里常常可以看到奇观:夏季时,岭北大雨滂沱,岭南却阳光灿烂;冬季时,岭北阴郁一片,而岭南却是阳光明媚。这一点 , 我们多次开车路过此地时已充分体验过。分界洲岛东面悬崖峭壁,浪花如雪;西面则有一个波平浪缓的小海湾,湾内的沙滩非常松软细白。 春节的一天 , 我们坐快艇用三分钟时间从陆地来到岛上 , 一上岛从烟波浩渺的南海吹来的海风就让我们感到春天的明媚气息,岛周围海域有大量珊瑚礁和各种热带鱼。当天 , 夜宿岛上的小木屋,就是电影《非诚勿扰》里那样的小木屋。夜晚,白天熙熙攘攘的人群已离去 , 小岛像无人岛一样寂静 , 只听到潮水声哗哗地拍打海岸和礁石的声音,偶尔有不知名的鸟儿的怪叫声。 远处渔火点点,躺在木屋露台的浴缸里泡浴,仰望天空 , 似乎星星伸手可摘。 住在别墅式的小木屋里 , 可以充分发挥你的想像力 , 在这里感受曾经荒无人烟的岛屿风情,如果你喜欢冒险,也可以在附近的无人岛上畅游 , 但是一定要有丰富的野外生活经验。白天 , 你可以沿着由凿有国内外各个朝代古币的花岗石铺成的 “ 钱路 ” 拾级而上,但见石峰林立,峭壁万仞,奇树簇拥。 站在山顶,分界洲岛周围海水清澈,碧蓝 , 海与沙与天相衔接,形成一幅壮丽自然的美妙画卷。 1、碧蓝的海水,雪白的浪花拍打在礁石上 2、小船在海上漂,游人在阳光下的海滩上漫步 3、三条小船从远处缓缓而来 4、一点点进入我们视野 5、慢慢悠悠,让我们心的节奏放缓 6、就这样慢悠悠地漂吧,让时光流逝得慢点再慢点 7、从木屋顶望过去,时间好像流回到过去 \ 8、面向大海春暧花开的日子就在山脚下 9、这高高的悬崖,你可小心点儿,一失足便成千古恨啊 10、让我们的日子从容些,再从容些,不必那么急,那么快 11、在温暖的小木屋里,沐浴着南中国的海风,读一本喜欢的书, 12、在星光下美美地泡个浴,洗去一身的疲惫 13、看雪白的浪花在脚下翻涌
6903 次阅读|107 个评论
[转载]图像分割(Image Segmentation)
gexingmeicun 2012-8-5 00:51
图像分割(Image Segmentation) 作者:王先荣 前言 图像分割指的是将数字图像细分为多个图像子区域的过程,在OpenCv中实现了三种跟图像分割相关的算法,它们分别是:分水岭分割算法、金字塔分割算法以及均值漂移分割算法。它们的使用过程都很简单,下面的文章权且用于记录,并使该系列保持完整吧。 分水岭分割算法 分水岭分割算法需要您或者先前算法提供标记,该标记用于指定哪些大致区域是目标,哪些大致区域是背景等等;分水岭分割算法的分割效果严重依赖于提供的标记。OpenCv中的函数cvWatershed实现了该算法,函数定义如下: !-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -- void cvWatershed( const CvArr * image, CvArr * markers) 其中:image为8为三通道的彩色图像; markers是单通道整型图像,它用不同的正整数来标记不同的区域,下面的代码演示了如果响应鼠标事件,并生成标记图像。 生成标记图像 !-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -- // 当鼠标按下并在源图像上移动时,在源图像上绘制分割线条 private void pbSource_MouseMove( object sender, MouseEventArgs e) { // 如果按下了左键 if (e.Button == MouseButtons.Left) { if (previousMouseLocation.X = 0 previousMouseLocation.Y = 0 ) { Point p1 = new Point(( int )(previousMouseLocation.X * xScale), ( int )(previousMouseLocation.Y * yScale)); Point p2 = new Point(( int )(e.Location.X * xScale), ( int )(e.Location.Y * yScale)); LineSegment2D ls = new LineSegment2D(p1, p2); int thickness = ( int )(LineWidth * xScale); imageSourceClone.Draw(ls, new Bgr(255d, 255d, 255d), thickness); pbSource.Image = imageSourceClone.Bitmap; imageMarkers.Draw(ls, new Gray(drawCount), thickness); } previousMouseLocation = e.Location; } } // 当松开鼠标左键时,将绘图的前一位置设置为(-1,-1) private void pbSource_MouseUp( object sender, MouseEventArgs e) { previousMouseLocation = new Point( - 1 , - 1 ); drawCount ++ ; } 您可以用类似下面的方式来使用分水岭算法: 使用分水岭分割算法 !-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -- /// summary /// 分水岭算法图像分割 /// /summary /// returns 返回用时 /returns private string Watershed() { // 分水岭算法分割 Image Gray, Int32 imageMarkers2 = imageMarkers.Copy(); Stopwatch sw = new Stopwatch(); sw.Start(); CvInvoke.cvWatershed(imageSource.Ptr, imageMarkers2.Ptr); sw.Stop(); // 将分割的结果转换到256级灰度图像 pbResult.Image = imageMarkers2.Bitmap; imageMarkers2.Dispose(); return string .Format( " 分水岭图像分割,用时:{0:F05}毫秒。\r\n " , sw.Elapsed.TotalMilliseconds); } 金字塔分割算法 金字塔分割算法由cvPrySegmentation所实现,该函数的使用很简单;需要注意的是图像的尺寸以及金字塔的层数,图像的宽度和高度必须能被2整除,能够被2整除的次数决定了金字塔的最大层数。下面的代码演示了如果校验金字塔层数: 校验金字塔分割的金字塔层数 !-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -- /// summary /// 当改变金字塔分割的参数“金字塔层数”时,对参数进行校验 /// /summary /// param name="sender"/param /// param name="e"/param private void txtPSLevel_TextChanged( object sender, EventArgs e) { int level = int .Parse(txtPSLevel.Text); if (level 1 || imageSource.Width % ( int )(Math.Pow( 2 , level - 1 )) != 0 || imageSource.Height % ( int )(Math.Pow( 2 , level - 1 )) != 0 ) MessageBox.Show( this , " 注意:您输入的金字塔层数不符合要求,计算结果可能会无效。 " , " 金字塔层数错误 " ); } 使用金字塔分割的示例代码如下: 使用金字塔分割算法 !-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -- /// summary /// 金字塔分割算法 /// /summary /// returns/returns private string PrySegmentation() { // 准备参数 Image Bgr, Byte imageDest = new Image Bgr, byte (imageSource.Size); MemStorage storage = new MemStorage(); IntPtr ptrComp = IntPtr.Zero; int level = int .Parse(txtPSLevel.Text); double threshold1 = double .Parse(txtPSThreshold1.Text); double threshold2 = double .Parse(txtPSThreshold2.Text); // 金字塔分割 Stopwatch sw = new Stopwatch(); sw.Start(); CvInvoke.cvPyrSegmentation(imageSource.Ptr, imageDest.Ptr, storage.Ptr, out ptrComp, level, threshold1, threshold2); sw.Stop(); // 显示结果 pbResult.Image = imageDest.Bitmap; // 释放资源 imageDest.Dispose(); storage.Dispose(); return string .Format( " 金字塔分割,用时:{0:F05}毫秒。\r\n " , sw.Elapsed.TotalMilliseconds); } 均值漂移分割算法 均值漂移分割算法由cvPryMeanShiftFiltering所实现,均值漂移分割的金字塔层数只能介于 之间,您可以用类似下面的代码来使用它: 使用均值漂移分割算法 !-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -- /// summary /// 均值漂移分割算法 /// /summary /// returns/returns private string PryMeanShiftFiltering() { // 准备参数 Image Bgr, Byte imageDest = new Image Bgr, byte (imageSource.Size); double spatialRadius = double .Parse(txtPMSFSpatialRadius.Text); double colorRadius = double .Parse(txtPMSFColorRadius.Text); int maxLevel = int .Parse(txtPMSFNaxLevel.Text); int maxIter = int .Parse(txtPMSFMaxIter.Text); double epsilon = double .Parse(txtPMSFEpsilon.Text); MCvTermCriteria termcrit = new MCvTermCriteria(maxIter, epsilon); // 均值漂移分割 Stopwatch sw = new Stopwatch(); sw.Start(); OpenCvInvoke.cvPyrMeanShiftFiltering(imageSource.Ptr, imageDest.Ptr, spatialRadius, colorRadius, maxLevel, termcrit); sw.Stop(); // 显示结果 pbResult.Image = imageDest.Bitmap; // 释放资源 imageDest.Dispose(); return string .Format( " 均值漂移分割,用时:{0:F05}毫秒。\r\n " , sw.Elapsed.TotalMilliseconds); } 函数cvPryMeanShiftFiltering在EmguCv中没有实现,我们可以用下面的方式来使用: 调用均值漂移分割 !-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -- // 均值漂移分割 public static extern void cvPyrMeanShiftFiltering(IntPtr src, IntPtr dst, double spatialRadius, double colorRadius, int max_level, MCvTermCriteria termcrit); 分割效果及性能对比 上述三种分割算法的效果如何呢?下面我们以它们的默认参数,对一幅2272x1704大小的图像进行分割。得到的结果如下所示: 图1 分水岭分割算法(左图白色的线条用于标记区域) 图2 金字塔分割算法 图3 均值漂移分割算法 从上面我们可以看出: (1)分水岭分割算法的分割效果效果最好,均值漂移分割算法次之,而金字塔分割算法的效果最差; (2)均值漂移分割算法效率最高,分水岭分割算法接近于均值漂移算法,金字塔分割算法需要很长的时间。 值得注意的是分水岭算法对标记很敏感,需要仔细而认真的绘制。 本文的完整代码如下: 本文完整代码 !-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -- using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Runtime.InteropServices; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; using Emgu.CV.UI; namespace ImageProcessLearn { public partial class FormImageSegment : Form { // 成员变量 private string sourceImageFileName = " wky_tms_2272x1704.jpg " ; // 源图像文件名 private Image Bgr, Byte imageSource = null ; // 源图像 private Image Bgr, Byte imageSourceClone = null ; // 源图像的克隆 private Image Gray, Int32 imageMarkers = null ; // 标记图像 private double xScale = 1d; // 原始图像与PictureBox在x轴方向上的缩放 private double yScale = 1d; // 原始图像与PictureBox在y轴方向上的缩放 private Point previousMouseLocation = new Point( - 1 , - 1 ); // 上次绘制线条时,鼠标所处的位置 private const int LineWidth = 5 ; // 绘制线条的宽度 private int drawCount = 1 ; // 用户绘制的线条数目,用于指定线条的颜色 public FormImageSegment() { InitializeComponent(); } // 窗体加载时 private void FormImageSegment_Load( object sender, EventArgs e) { // 设置提示 toolTip.SetToolTip(rbWatershed, " 可以在源图像上用鼠标绘制大致分割区域线条,该线条用于分水岭算法 " ); toolTip.SetToolTip(txtPSLevel, " 金字塔层数跟图像尺寸有关,该值只能是图像尺寸被2整除的次数,否则将得出错误结果 " ); toolTip.SetToolTip(txtPSThreshold1, " 建立连接的错误阀值 " ); toolTip.SetToolTip(txtPSThreshold2, " 分割簇的错误阀值 " ); toolTip.SetToolTip(txtPMSFSpatialRadius, " 空间窗的半径 " ); toolTip.SetToolTip(txtPMSFColorRadius, " 色彩窗的半径 " ); toolTip.SetToolTip(btnClearMarkers, " 清除绘制在源图像上,用于分水岭算法的大致分割区域线条 " ); // 加载图像 LoadImage(); } // 当窗体关闭时,释放资源 private void FormImageSegment_FormClosing( object sender, FormClosingEventArgs e) { if (imageSource != null ) imageSource.Dispose(); if (imageSourceClone != null ) imageSourceClone.Dispose(); if (imageMarkers != null ) imageMarkers.Dispose(); } // 加载源图像 private void btnLoadImage_Click( object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.CheckFileExists = true ; ofd.DefaultExt = " jpg " ; ofd.Filter = " 图片文件|*.jpg;*.png;*.bmp|所有文件|*.* " ; if (ofd.ShowDialog( this ) == DialogResult.OK) { if (ofd.FileName != "" ) { sourceImageFileName = ofd.FileName; LoadImage(); } } ofd.Dispose(); } // 清除分割线条 private void btnClearMarkers_Click( object sender, EventArgs e) { if (imageSourceClone != null ) imageSourceClone.Dispose(); imageSourceClone = imageSource.Copy(); pbSource.Image = imageSourceClone.Bitmap; imageMarkers.SetZero(); drawCount = 1 ; } // 当鼠标按下并在源图像上移动时,在源图像上绘制分割线条 private void pbSource_MouseMove( object sender, MouseEventArgs e) { // 如果按下了左键 if (e.Button == MouseButtons.Left) { if (previousMouseLocation.X = 0 previousMouseLocation.Y = 0 ) { Point p1 = new Point(( int )(previousMouseLocation.X * xScale), ( int )(previousMouseLocation.Y * yScale)); Point p2 = new Point(( int )(e.Location.X * xScale), ( int )(e.Location.Y * yScale)); LineSegment2D ls = new LineSegment2D(p1, p2); int thickness = ( int )(LineWidth * xScale); imageSourceClone.Draw(ls, new Bgr(255d, 255d, 255d), thickness); pbSource.Image = imageSourceClone.Bitmap; imageMarkers.Draw(ls, new Gray(drawCount), thickness); } previousMouseLocation = e.Location; } } // 当松开鼠标左键时,将绘图的前一位置设置为(-1,-1) private void pbSource_MouseUp( object sender, MouseEventArgs e) { previousMouseLocation = new Point( - 1 , - 1 ); drawCount ++ ; } // 加载源图像 private void LoadImage() { if (imageSource != null ) imageSource.Dispose(); imageSource = new Image Bgr, byte (sourceImageFileName); if (imageSourceClone != null ) imageSourceClone.Dispose(); imageSourceClone = imageSource.Copy(); pbSource.Image = imageSourceClone.Bitmap; if (imageMarkers != null ) imageMarkers.Dispose(); imageMarkers = new Image Gray, Int32 (imageSource.Size); imageMarkers.SetZero(); xScale = 1d * imageSource.Width / pbSource.Width; yScale = 1d * imageSource.Height / pbSource.Height; drawCount = 1 ; } // 分割图像 private void btnImageSegment_Click( object sender, EventArgs e) { if (rbWatershed.Checked) txtResult.Text += Watershed(); else if (rbPrySegmentation.Checked) txtResult.Text += PrySegmentation(); else if (rbPryMeanShiftFiltering.Checked) txtResult.Text += PryMeanShiftFiltering(); } /// summary /// 分水岭算法图像分割 /// /summary /// returns 返回用时 /returns private string Watershed() { // 分水岭算法分割 Image Gray, Int32 imageMarkers2 = imageMarkers.Copy(); Stopwatch sw = new Stopwatch(); sw.Start(); CvInvoke.cvWatershed(imageSource.Ptr, imageMarkers2.Ptr); sw.Stop(); // 将分割的结果转换到256级灰度图像 pbResult.Image = imageMarkers2.Bitmap; imageMarkers2.Dispose(); return string .Format( " 分水岭图像分割,用时:{0:F05}毫秒。\r\n " , sw.Elapsed.TotalMilliseconds); } /// summary /// 金字塔分割算法 /// /summary /// returns/returns private string PrySegmentation() { // 准备参数 Image Bgr, Byte imageDest = new Image Bgr, byte (imageSource.Size); MemStorage storage = new MemStorage(); IntPtr ptrComp = IntPtr.Zero; int level = int .Parse(txtPSLevel.Text); double threshold1 = double .Parse(txtPSThreshold1.Text); double threshold2 = double .Parse(txtPSThreshold2.Text); // 金字塔分割 Stopwatch sw = new Stopwatch(); sw.Start(); CvInvoke.cvPyrSegmentation(imageSource.Ptr, imageDest.Ptr, storage.Ptr, out ptrComp, level, threshold1, threshold2); sw.Stop(); // 显示结果 pbResult.Image = imageDest.Bitmap; // 释放资源 imageDest.Dispose(); storage.Dispose(); return string .Format( " 金字塔分割,用时:{0:F05}毫秒。\r\n " , sw.Elapsed.TotalMilliseconds); } /// summary /// 均值漂移分割算法 /// /summary /// returns/returns private string PryMeanShiftFiltering() { // 准备参数 Image Bgr, Byte imageDest = new Image Bgr, byte (imageSource.Size); double spatialRadius = double .Parse(txtPMSFSpatialRadius.Text); double colorRadius = double .Parse(txtPMSFColorRadius.Text); int maxLevel = int .Parse(txtPMSFNaxLevel.Text); int maxIter = int .Parse(txtPMSFMaxIter.Text); double epsilon = double .Parse(txtPMSFEpsilon.Text); MCvTermCriteria termcrit = new MCvTermCriteria(maxIter, epsilon); // 均值漂移分割 Stopwatch sw = new Stopwatch(); sw.Start(); OpenCvInvoke.cvPyrMeanShiftFiltering(imageSource.Ptr, imageDest.Ptr, spatialRadius, colorRadius, maxLevel, termcrit); sw.Stop(); // 显示结果 pbResult.Image = imageDest.Bitmap; // 释放资源 imageDest.Dispose(); return string .Format( " 均值漂移分割,用时:{0:F05}毫秒。\r\n " , sw.Elapsed.TotalMilliseconds); } /// summary /// 当改变金字塔分割的参数“金字塔层数”时,对参数进行校验 /// /summary /// param name="sender"/param /// param name="e"/param private void txtPSLevel_TextChanged( object sender, EventArgs e) { int level = int .Parse(txtPSLevel.Text); if (level 1 || imageSource.Width % ( int )(Math.Pow( 2 , level - 1 )) != 0 || imageSource.Height % ( int )(Math.Pow( 2 , level - 1 )) != 0 ) MessageBox.Show( this , " 注意:您输入的金字塔层数不符合要求,计算结果可能会无效。 " , " 金字塔层数错误 " ); } /// summary /// 当改变均值漂移分割的参数“金字塔层数”时,对参数进行校验 /// /summary /// param name="sender"/param /// param name="e"/param private void txtPMSFNaxLevel_TextChanged( object sender, EventArgs e) { int maxLevel = int .Parse(txtPMSFNaxLevel.Text); if (maxLevel 0 || maxLevel 8 ) MessageBox.Show( this , " 注意:均值漂移分割的金字塔层数只能在0至8之间。 " , " 金字塔层数错误 " ); } } }
个人分类: 科研笔记|6325 次阅读|0 个评论
[转载]分水岭图像分割算法
热度 1 CanXiang 2012-6-4 16:59
[转载]分水岭图像分割算法
基于形态学分水岭的分割   到现在为止,已经讨论了基于 3 种主要概念的分割方法: (a) 间断的检测; (b) 门限处理和 (c) 区域处理。每种方法各有优点 ( 例如,全局门限处理的速度优势 ) 和缺点 ( 如,以灰度级的间断检测为基础的方法需要诸如边线连接等后处理 ) 。本节中,讨论基于所谓的形态学分水岭概念的方法。接下来将要说明,形态学分水岭分割将其他 3 种方法中的许多概念进行了具体化,包括连续的边界分割在内,它生成的分割结果通常更为稳定。这条途径也为在分割过程中结合基于知识的约束提供了一个简单的框架。 一.基本概念 分水岭概念是以对图像进行三维可视化处理为基础的:其中两个是坐标,另一个是灰度级。对于这样:一种“地形学”的解释,我们考虑三类点: (a) 属于局部性最小值的点; (b) 当一滴水放在某点的位置上的时候,水一定会下落到一个单一的最小值点; (c) 当水处在某个点的位置上时,,水会等概率地流向不止一个这样的最小值点。对一个特定的区域最小值,满足条件 (b) 的点的集合称为这个最小值的“汇水盆地”或“分水岭”。满足条件 (c) 的点的集合组成地形表面的峰线,术语称做“分割线”或“分水线”。 基于这些概念的分割算法的主要目标是找出分水线。基本思想很简单:假设在每个区域最小值的位置上打一个洞并且让水以均匀的上升速率从洞中涌出,从低到高淹没整个地形。当处在不同的汇聚盆地中的水将要聚合在一起时,修建的大坝将阻止聚合。水将只能到达大坝的顶部处于水线之上的程度。这些大坝的边界对应于分水岭的分割线。所以,它们是由分水岭算法提取出来的 ( 连续的 ) 边界线。 这些思想可以用图 10.44 作为辅助做进一步的解释。图 10.44(a) 显示了一个简单的灰度级图像。图 10.44(b) 是地形图。其中“山峰”的高度与输入图像的灰度级值成比例。为了易于解释,这个结构的后方被遮蔽起来。这是为了不与灰度级值相混淆;三维表达对一般地形学是很重要的。为了阻止上升的水从这些结构的边缘溢出,我们想像将整幅地形图的周围用比最高山峰还高的大坝包围起来。最高山峰的值是由输入图像灰度级可能具有的最大值决定的。 假设在每个区域最小值中打一个洞 ,并且让水以均匀的上升速率从洞中涌出,从低到高淹没整个地形。图 10.44(c) 说明被水淹没的第一个阶段,这里水用浅灰色表示,覆盖了对应于图中深色背景的区域。在图 10.44(d) 和 (e) 中,我们看到水分别在第一和第二汇水盆地中上升。由于水持续上升,最终水将从一个汇水盆地中溢出到另一个之中。图 10.44(f) 中显示了溢出的第一个征兆。这里,水确实从左边的盆地溢出到右边的盆地,并且两者之间有一个短“坝” ( 由单像素构成 ) 阻止这一水位的水聚合在一起 ( 在接下来的章节中将讨论坝的构筑 ) 。由于水位不断上升,实际的效果要超出我们所说的。如图 10.44(g) 所显示的那样。这幅图中在两个汇水盆地之间显示了一条更长的坝,另一条水坝在右上角。这条水坝阻止了盆地中的水和对应于背景的水的聚合。这个过程不断延续直到到达水位的最大值 ( 对应于图像中灰度级的最大值 ) 。水坝最后剩下的部分对应于分水线,这条线就是要得到的分割结果。 对于这个例子,在图 l0.44(h) 中显示为叠加到原图上的一个像素宽的深色路径。注意一条重要的性质就是分水线组成一条连通的路径,由此给出了区域之间的连续的边界。 分水岭分割法的主要应用是从背景中提取近乎一致 ( 类似水滴的 ) 的对象。那些在灰度级上变化较小的区域的梯度值也较小。因此,实际上,我们经常可以见到分水岭分割方法与图像的梯度有更大的关系,而不是图像本身。有了这样的表示方法,汇水盆地的局部最小值就可以与对应于所关注的对象的小的梯度值联系起来了。 二.水坝构造 在进行讨论之前,让我们考虑一下如何构造分水岭分割方法所需的水坝或分水线。水坝的构造是以二值图像为基础的,这种图像属于二维整数空间 Z 2 ( 见 2.4.2 节 ) 。构造水坝分离二元点集的最简单的方法是使用形态膨胀 ( 见 9.2.1 节 ) 。 图 l0.45 说明了如何使用形态膨胀构造水坝的基本点。图 l0.45(a) 显示了两个汇水盆地的部分区域在淹没步骤的第 n-1 步时的图像。图 10.45(b) 显示了淹没的下一步 ( 第 n 步 ) 的结果。水已经从一个盆地溢出到另一个盆地,所以,必须建造水坝阻止这种情况的发生。为了与紧接着要介绍的符号相一致,令 M 1 和 M 2 表示在两个区域极小值中包含的点的坐标集合。然后,将处于汇水盆地中的点的坐标集合与这两个在溢出的第 n-1 个阶段的最小值联系起来,并用 C n-1 (M 1 ) 和 C n-1 (M 2 ) 表示。这就是图 10.45(a) 中的两个黑色区域。 令这两个集合的联合用 C 表示。图 l0.45(a) 中有两个连通分量 ( 见 2.5.2 节关于连通分量的部分 ) ,而图 10.45(b) 中只有一个连通分量。这个连通分量包含着前面的两个分量,用虚线表示。两个连通分量变成一个连通分量的事实说明两个汇水盆地中的水在淹没的第 n 步聚合了。用 q 表示此时的连通分量。注意,第 n-1 步中的两个连通分量可以通过使用“与”操作 (q ∩ C ) 从 q 中提取出来。我们也注意到,属于独立的汇水盆地的所有点构成了一个单一的连通分量。 假设图 10.45(a) 中的每个连通分量通过使用图 l0.45(e) 中显示的结构元膨胀,在两个条件下: (1) 膨胀受到 q 的约束 ( 这意味着在膨胀的过程中结构化元素的中心只能定位于 q 中 ) 并且 (2) 在引起集合聚合的那些点上不能执行膨胀 ( 成为单一的连通分量 ) 。图 l0.45(d) 显示首轮膨胀 ( 浅灰色表示 ) 使用了每个初始连通分量的边界。注意,在膨胀过程中每个点都满足条件 (1) 。条件 (2) 在膨胀处理中没有应用于任何的点;因此,每个区域的边界都进行了均匀的扩展。 在第二轮膨胀中 ( 中等灰度表示 ) ,几个不满足条件 (1) 的点符合条件 (2) 时,得到图中显示的断开周界。很明显,只有满足上述两个条件的属于 q 中的点描绘了图 10.45(d) 中交叉阴影线表示的一个像素宽度的连通路径。这条路径组成在淹没的第 n 个阶段我们希望得到的水坝。在这个淹没水平上,水坝的构造是由置所有刚好在这条路径上的点的值为比图像中灰度级的最大值还大的值完成的。所有水坝的高度通常设定为 1 加上图像中灰度级最大允许值。这样设定可以阻止在水位不断升高的情况下水越过部分水坝。应该特别注意到的是通过这一过程建立的水坝是连通分量,就是我们希望得到的分割边界。就是说,这种方法消除了分割线产生间断的问题。 尽管刚刚讨论的过程是用一个简单的例子说明的,但是处理更为复杂情况的方法是完全相同的,包括图 10.45(c) 中显示的 3 × 3 对称结构元素的使用也是相同的。 三.分水岭分割算法 令 M 1 , M 2 ,…, M R 为表示图像 g(x , y) 的局部最小值点的坐标的集合。如同在 10.5.1 节结尾说明的那样,这是一幅典型的梯度图像。令 G(M i ) 为一个点的坐标的集合,这些点位于与局部最小值 M i ( 回想无论哪一个汇水盆地内的点都组成一个连通分量 ) 相联系的汇水盆地内。符号 min 和 max 代表 g(x , y) 的最小值和最大值。最后,令 T 表示坐标 (s , t) 的集合,其中 g(s,t)n, 即 在几何上, T 是 g(x , y) 中的点的坐标集合,集合中的点均位于平面 g(x , y)=n 的下方。 随着水位以整数量从 n=min+1 到 n=max+1 不断增加,图像中的地形会被水漫过。在 水位漫过地形的过程中的每一阶段,算法都需要知道处在水位之下的点的数目。从概念上来说,假设 T 中的坐标处在 g(x , y)=n 平面之下,并被“标记”为黑色,所有其他的坐标被标记为白色。然后,当我们在水位以任意增量 n 增加的时候,从上向下观察 xy 平面,会看到一幅二值图像。在图像中黑色点对应于函数中低于平面 g(x , y)=n 的点。这种解释对于理解下面的讨论很有帮助。 令 C n (M i ) 表示汇水盆地中点的坐标的集合。这个盆地与在第 n 阶段被淹没的最小值有关。参考前一段的讨论, C n (M i ) 也可以被看做由下式给出的二值图像: 换句话说,如果 (x , y) ∈ C n (M i ) 且 (x , y) ∈ T ,则在位置 (x , y) 有 C n (M i )=1 。否 则C n (M i )=0. 对于这个结果几何上的解释是很简单的。我们只需在水溢出的第 n 个阶段使用“与 (AND) ”算子将 T 中的二直图像分离出来即可。 T 是与局部最小值 M i 相联系的集合。 接下来,我们令 C 表示在第 n 个阶段汇水盆地被水淹没的部分的合集: 然后令 C 为所有汇水盆地的合集: 可以看出 处于 C n ( M i ) 和 T 中的元素在算法执行期间是不会被替换的,而且这两个集合中的元素的数目与 n 保持同步增长。因此, C 是集合 C 的子集。根据式 (10.5.2) 和式 (10.5.3) , C 是 T 的子集,所以, C 是 T 的子集。从这个结论我们得 出重要的结果: C 中的每个连通分量都恰好是 T 的一个连通分量。 找寻分水线的算法开始时设定 C =T 。然后算法进入递归调用,假设在第 n 步时,已经构造了 C 。根据 C 求得 C 的过程如下:令 Q 代表 T 中连通分量的集合。然后,对于每个连通分量 q ∈ Q ,有下列 3 种可能性: (a) q ∩ C 为空。 (b) q ∩ C 包含 C 中的一个连通分量。 (c) q ∩ C 包含 C 多于一个的连通分量。 根据 C 构造 C 取决于这 3 个条件。当遇到一个新的最小值时符合条件 (a) ,则将 q 并人 C 构成 C 。当 q 位于某些局部最小值构成的汇水盆地中时,符合条件 (b) ,此时将 q 合并入 C 构成 C 。当遇到全部或部分分离两个或更多汇水盆地的山脊线的时候,符合条件 (c) 。进一步的注水会导致不同盆地的水聚合在一起,从而使水位趋于一致。因此,必须在 q 内建立一座水坝 ( 如果涉及多个盆地就要建立多座水坝 ) 以阻止盆地内的水溢出。正如前一节中的解释,当用 3 × 3 个 1 的结构元素膨胀 q ∩ C 并且需要将这种膨胀限制在 q 内时,一条一个像素宽度的水坝是能够构造出来的。 通过使用与 g(x , y) 中存在的灰度级值相对应的 n 值,可以改善算法效率;根据 g(x , y) 的直方图,可以确定这些值及其最小值和最大值。   例 10.18 分水岭分割算法的说明 分别考虑图 10.46(a) 和 (b) 中显示的图像和它的梯度。应用刚才讨论的分水岭算法得到图 10.46(c) 中显示的梯度图像的分水线 ( 白色路径 ) 。这些分割的边界叠加在原图上示于图 10.46(d) 。如在本节中开始时所注意到的,分割边界具有那些被连接起来的路径的重要性质 。 四.应用标记 直接以前一节中讨论的形式使用分水岭分割算法通常会由于噪声和其他诸如梯度的局部不规则性的影响造成过度分割。如图 10 . 47 所示,过度分割足以令应用算法得到的结果变得毫无用处。此时,过度分割意味着分割区域过多。一个较实际的解决方案是通过合并预处理步骤来限制允许存在的区域的数目,这些预处理步骤是为将附加知识应用于分割过程而设置的。 用于控制过度分割的方法是以标记的概念为基础的。一个标记是属于一幅图像的连通分量。我们有与重要对象相联系的内部标记,还有同背景相联系的外部标记。选择标记的典型过程包括两个主要步骤: (1) 预处理; (2) 定义一个所有标记必须满足的准则集合。为了对此进行说明,再次考虑图 10.47(a) 。导致图 10.47(b) 中过度分割结果的一部分原因是大量隐含的最小值。由于这些区域的尺寸很小,所以这些最小值中有很多是不相关的细节。在前面的讨论中,已经不止一次地提到,将很小的细节对于图像的影响降至最低的有效 方法是用一个平滑滤渡器对图像进行过滤。在这种特殊情况下,这是一种合适的预处理方案。 假设在此时将内部标记定义为 (1) 被更高“海拔”点包围起来的区域; (2) 区域中的点组成一个连通分量;并且 (3) 所有属于这个连通分量的点具有相同的灰度级值。在图像经过平滑处理之后,满足这些定义的内部标记以图 10.48(a) 中浅灰色、斑点状区域表示。下一步,对平滑处理后的图像使用分水岭算法,并限制这些内部标记只能是允许的局部最小值。图 l0.48(a) 显示了得到的分水线。将这些分水线定义为外部标记。注意,沿着分水线的点是很好的背景候选点。因为它们经过相邻的标记之间的最高点。 图 10.48(a) 中显示的外部标记有效地将图像分割成不同区域。每个区域包含一个惟一的内部标记和部分背景。问题是因此变为将每个这样的区域一分为二:单一的对象和它的背景。我们对这个简单的问题能够应用多种在本章前面讨论过的分割技术。另一种简单的方法是对每个单独的区域使用分水岭分割算法。就是说,我们只求得平滑后的图像的梯度 ,然后约束算法只对包含特定区域中标记的分水岭进行操作。使用这种方法得到的结果显示于图 10.48(b) 中。相对于图 10.47(b) 的改善之处是显而易见的。 标记的选择可以用基于灰度级值和连通性的简单的过程分类,如刚才所说明的那样,更复杂的描述涉及尺寸、形状、位置、相对距离、纹理内容等等 ( 见第 11 章关于描绘子的部分 ) 。关键是标记的使用给我们带来关于分割问题的某种带有先验性质的知识。应该提醒读者注意的是:人类经常以先验知识用日常的视觉辅助,进行各种分割和更高级的工作,最熟悉的例子就是在阅读上下文时所用到的方法。因此,分水岭分割方法提出了一种能有效使用这类知识的机制。这是这种方法的一个突出优点。 转自: http://met.fzu.edu.cn/dip/c10_5.htm
13300 次阅读|2 个评论
戒除毒品的希望曙光
kejidaobao 2012-3-7 15:04
文/杨书卷 2月12日,美国歌坛天后Whitney Houston的死亡震惊了整个世界。以毒品为分水岭,“在这之前她的演艺事业是一个神话,在这之后则是一个笑话”,一篇悼念文章如是总结她的一生。在Whitney年仅48岁的生命历程中,后20年基本上是在对毒品的反复沉溺与争斗中度过。在这一点上,毒品对任何人,无论是天才还是普通人都非常“公平”,那就是,所有人最终都会走上可怕的“自我毁灭”之路。 此时,一则不久前并未引起过多关注的消息重新回归人们的视线之中:2月2日,墨西哥卫生部长Salomon Chertorivski宣布,一种用来对抗海洛因成瘾的疫苗将在5年内用在人类身上。 墨西哥一直以来深受毒品危害,任何与戒毒有关的努力都会得到政府不遗余力的支持。墨西哥国家精神疾病研究中心于10年前就开始专注海洛因疫苗的研制,其治疗原理是激起免疫响应,阻止海洛因进入神经系统并依附在脑干上,减轻病人对服用海洛因时“无法拒绝”的渴望,有效降低毒品“侵袭”对大脑造成的影响。通过对海洛因成瘾的老鼠进行的试验发现,老鼠的毒瘾逐渐消失。在动物实验中取得令人兴奋的疗效后,“海洛因疫苗”现已进入人体临床实验阶段(2月3日人民网)。 毒品成瘾是可以摧毁任何人意志控制力的“恶魔”,而且到现在为止,所有防复吸药物的临床治疗都差强人意,但近年来,有关“戒毒疫苗”的研发开始异军突起,为频临绝望的毒品吸食者带来了希望曙光。 “戒毒疫苗”的机理与普通疫苗相似:用人工合成的模拟毒品物质,在人体内形成抗体,当毒品进入体内后,这些抗体会将毒品分子中和并排出体外,使它们不可能进入大脑,瘾君子们将无法获得快感,从而“抹去”病人对毒品的根植于大脑深处的强烈渴求,而针对不同的毒品,一般需要研制不同的戒毒疫苗。 2011年1月,美国耶鲁大学宣布研制成功“可卡因疫苗”,这也是世界上“首支”戒毒疫苗的诞生。一个12周的对可卡因吸食者的临床试验结果显示,58%的受试者未使用可卡因;随访6个月后的结果显示,有42%受试者依然保持操守;2011年8月,俄罗斯乌拉尔国立医学科学院的专家研制出“鸦片”疫苗,已经在小型动物身上试验成功,在对大型动物进行试验后,可进行人体临床试验,这一过程将需要2年时间;现在,成瘾最快,毒性最烈的“毒品之王”海洛因疫苗也初露头角,标志着“戒毒疫苗”作为一种新的治疗方式,已成为期盼已久的戒毒“新出路”。 不过,虽然戒毒疫苗可以使吸毒者得不到吸毒的快感,但现在也还仅处于动物实验阶段,这种方式对于人类内心欲望的消减程度有多大还不得而知,因为毒瘾戒除不仅是生理问题,还有着复杂的社会、心理因素,单纯的药物治疗也许难以统揽全部,海洛因疫苗的研制负责人Maria就谨慎地认为:“该疫苗的研制成功并不能完全解决毒品成瘾现象,而只是缓解这一问题的一种途径。” 尽管研究人员出言保守,戒毒疫苗还是被我们寄予极高的期待,因为在目前已知的治疗方法中,戒毒疫苗的理论依据堪称完美,操作方法也简便可行,鉴于全球日趋严重的毒品问题,彻底摆脱毒品、并且让人在没有接触毒品之前就能防患于未然的目标,将是我们永远追求的理想。 戒除毒品的其他研究也在同时继续,近日,Nature和Science杂志均有此领域的进展报道。 瑞士日内瓦大学医学院Vincent Pascoli教授在1月5日的Nature杂志宣布了自己所在研究小组的最新发现,毒品可卡因对大脑的效应应该是可逆转的。 Pascoli是通过对突触的研究发现这一现象的。突触是一个神经元与另一个神经元相接触的部位,也是信息传递的关键部位。在可卡因吸食者的脑中,一些特定的突触会发生病理性的“增强作用”改变,同样的改变也会发生在可卡因成瘾的实验小鼠身上。在实验中,Pascoli利用光遗传学手段对小鼠的大脑突触实施特定的“去增强作用”,结果发现,当这些突触恢复正常功能之后,小鼠的毒瘾也会奇迹般消失,这就说明,我们也许可以完全用同样的方式治疗可卡因瘾君子。 刊登于2月3日Science上的一篇文章则揭示了“家族”吸毒的某种成因:吸毒成瘾者与他们不吸毒的兄弟姐妹有着相同的脑部异常表现。 研究人员Nora Volkow和Ruben Baler设置了3个组,吸毒成瘾者组、他们的无成瘾的兄弟姐妹组与健康组,通过对他们脑部的对照发现,吸毒成瘾者和他们的无成瘾的兄弟姐妹共有一些在其他健康人中所没有发现的脑部特征,并在控制自身冲动上的能力相对较差。研究者认为,这些脑部异常可能是一种遗传的、容易对毒品成瘾的标记。研究者提出,以这些脑部中的某些差异作为标靶,在易感染吸毒人群中增加自我控制能力的干预,也许是防范毒品吸食的方法之一,尽管这还需要作更多的研究来探索其可能性。 现今,毒品的泛滥已成为困扰社会生活最大的祸患之一,据统计,全球约有2亿人在使用毒品,每年因滥用毒品致死的人数高达20万,有效的戒毒新方法的研究成为人们翘首以盼的福音。但我们也应该看到,科学是我们的希望,但它绝非万能,全球每年毒品交易额逾8000亿美元,成为世界第二大宗买卖,仅次于军火,甚至高于石油,背后千丝万缕的社会影响、利益联系、权力争斗使得戒除毒瘾的努力超越了单纯的个人治疗行为,尽管科学的发展已经可以让我们能深入探究人的内心。■
个人分类: 科技风云|3463 次阅读|0 个评论
关于教育
vatang 2011-9-30 10:02
因为我还没有孩子,所以这个话题就像纸上谈兵。但看到我身边有孩子的人总是为这个问题苦恼,我忍不住要跳出来说几句。虽然我没有孩子,但至少,我曾经是个孩子。 对小孩的教育,12岁是个分水岭。12岁以前,家长对小孩的掌控是很游刃有余的。我常听人说小孩在3岁到10岁是最好玩的阶段,于是我常常这样理解,小孩子在家长眼里,更多的倾向是一个智能玩具,他们可以为这个职能玩具编写一些简单机械的控制程序,看着这个智能玩具按照自己设计的程序运转,心理感受到莫大的快感,这感觉是什么呢?满足与成就吧,每个人都是天生的艺术家,喜欢从自己的作品里寻求人生的意义。 但是很明显,这个智能玩具在12岁之后开始逐渐脱离家长的程序控制。因为并不是每个人都是伟大领袖,可以编制更宏大的程序来控制更大型的智能玩具。他们编写的程序太过于简单,已经让这个玩具慢慢感觉到了束缚,他们自身所具备的完善功能不能由这个简单程序尽善尽美的发挥,他们开始怀疑,开始探索,开始反抗,作为程序员的家长开始恐慌,他们或者不愿意承认是自己的程序太过于简单,或者即便承认却也没有能力编写更适合这个玩具发展的复杂程序,于是只剩下对玩具脱离自己轨道的忧虑,对玩具反抗的愤怒,对无法预测的未来轨道的惊恐,以及对自己一片混乱的怨恚。 马克思说事物的发展是不以人的意志为转移的。我借用一下,孩子的发展也不是以家长的意志为转移的。 对于12岁以后的孩子,家长应该改变一下自己的态度与方式了。 首先,不要再把孩子当成玩具,也不要把自己当成程序员,因为你不是上帝,编写不了完美的控制程序。即便如伟人毛泽东,也需要权力作为他程序漏洞的弥补,那些脱离程序控制的人,可以通过权力将其抹掉。但你即便你有权力,也不可能抹掉自己的孩子。我想这个时候,家长应该把孩子当成一个独立的个体,一个人,一个和自己一样的人赋予同等的尊敬与礼遇。你们是平等的,你们之间是互助的,你们是需要沟通和彼此理解的,千万不要把“不懂事”当成你拒绝沟通的借口,当你斥责孩子不懂事的时候,除了说明你不懂交流,不懂尊重,不懂礼节之外,你觉得你还懂什么? 其次,对孩子的期望请以自己作为参考标准。俗话说龙生龙,凤生凤,如果你要望子成龙,请先参考一下自己是不是一条龙。我想老鼠的基因是突变不成龙凤的,至少目前的技术条件无法达到这一点。人人都想做皇帝,但皇帝永远只有一个。根据《相对论》,进取是有参照系的,如果大家都跑的一样快,那就是大家都没跑;如果全都是状元,那就是没有状元;龙可以呼风唤雨,老鼠也可以打洞,如果他打洞是老鼠里面打得最深的,那就是进取和进步,为什么要用一条龙的标准去要求一只老鼠呢?当然,我知道在某个国度,老鼠和龙并非仅仅是分工的不同,许多家长望子成龙,是希望他们的子女不像他们一样受奴役,而是去奴役别人。这个愿望是美好的,实际也不是完全行不通的,但我总是想,通过奴役他人获得快感,传承的永远都是痛苦。既然大家都向往快乐,为什么非要痛苦代代相传呢? 再次,尽你所能,为你的孩子创造一个变化的环境。我想创造这个词也许太过于勉为其难,只要您不阻止,就算做创造了。当然,变化的环境是有前提的,就是看您的孩子是不是充满勃勃的进取之心。如果他的性格更喜欢安于现状,那么变化对他是多余的。古人说读万卷书,不如行万里路,说的其实就是《谁动了我的奶酪》那么简单的一个道理。做任何事都是有需求的,没有需求,何必去做呢?在一个相对封闭的小环境里,需求不多,任何大道理都是多余的,只有在环境不断发生变化的情况下,需求才会不断提出来,满足需求的愿望才会化成个人进取的动力。如果您不是伯乐,您的孩子就算是千里马,守着您也没有价值;您不是子期,您的孩子就算把琴抚到了伯牙的境界,又有谁会欣赏呢?在一个变化的环境里,他会遇见伯牙,会遇见伯乐,自然就会有做千里马,弹高山流水的冲动。这冲动会让学习变成他自发的一种行为,只要他愿意,他自己会头悬梁锥刺骨,不需要你每天耳提面命,做些让彼此都难受的事情。 最后,为了体现您真正的爱孩子,请努力提升自己。我们都知道,中国有个最大的谎言就是“一切为了孩子”。对于我来说,这句话不仅仅只是讽刺这个国家,它更可以讽刺这个国家的父母们。我们常听为人父母者感慨自己有多么爱自己的孩子,甚至于他们活着的意义就是为了自己的下一代。我很难理解一切为了孩子的父母会强迫孩子实现他们自己实现不了的愿望。当你责骂孩子不懂事,懒惰、懦弱、不负责任、好逸恶劳的时候,不知道你有没有用这一套责备对照一下自己。你永远是孩子的一个榜样,不论好坏。如果对照自己,你的孩子实际是继承的你的品质,那么这笔糊涂账,到底该算谁的呢? 结语:虽然这是和为人父母者探讨的话题,但是请那些一知半解的傻孩子别对号入座,借机把自己混蛋的原因全归罪到父母身上。女娲按自己的形象造人,但没造出一个女娲来。
1485 次阅读|0 个评论
[转载]xzren:关于日本地震的分析
热度 1 sheep021 2011-3-15 09:41
对此次地震,我没幸灾乐祸.从政治上说,日本这次地震,可以说,是东亚政治力量的一个分水岭,虽人类在大自然面前,束手无策,但人类可以以自己力量应对大自然,而人类在改造大自然的过程中,会付出代价.从政治上说,日本国内政治可暂时平缓一下.而从东亚范围内看,小日本其实是极其脆弱的,这个暴露,可以说,如果小日本的政客是聪明人的话,应该能感悟到一些重要东西,最好可彻底提醒小日本,为小日本以后的以后的政治军事动向敲响警钟:一个在安全上是极其脆弱的国家,过分的依赖与过分的张扬都是极其愚蠢极其危险的,特别是小日本的核电,这暴露出小日本的巨大弱点. 目前部分国民对这次地震流露的情绪比较复杂,其实这个思想与情绪是可理解的,从近代历史上,小日本给中国人的伤害是最重的,而且目前还不知悔改,民间有些发酵,是正常的,这也是有关阶层需要的,"民意"也是政治筹码,这也是小日本需要警醒的地方.也更是他要反思的地方,尤其是国际政治格局变化到这个样子,从经济上看,这次地震,又是国际经济秩序的一次洗礼,对东亚经济的组成是一次考验,而对美国经济的复苏,是利而不是弊. 如果我是日本的聪明政客,我绝对不发展核武器,从这次地震将日本的弱点暴露的赤裸,被扒光了所有的衣服. 从最近这几次国际上最大的自然灾害看,各国的救援机制对比可看出,中国的打可满分.而美国的那次奥尔良水灾,可看出美"民主"体制的"优点",就是金钱的万能."自由"的可贵,智利的地震,可看出中等国家的救援与大国的救援相比,还是国力问题.而海地的那次,则明显看出小国对天灾的无力,受制于人的可怜.小日本这次的救援可圈可点的不多. 见: http://blog.sina.com.cn/s/blog_516e180c01017g5g.html
个人分类: 地震预测|180 次阅读|1 个评论
314 是个分水岭
weizhangsuda 2010-3-14 21:28
今天的高口笔试悲剧了。 李笑来老师说过: 欠债还钱,偷懒偿命 。今天被我印证了。阅读和听译一直是高口的难点,也是我的弱项。但是说实话我好像所做的就只是些自欺欺人的挣扎而已。一方面我的英文水平还没满足那种水平的要求;另一方面我根本没怎么用过心,整天就做那些白日梦。一直以来,我总把自己的不幸归咎于自己的命运,抱怨父母的教育,抱怨这个社会。事实上,当残酷的现实打碎了白日梦后,才发现自己才是真正的罪魁祸首。一直苦闷为什么遇人不淑,为什么别人能上南大,能出国留学,而我,却只能在苏大这个破地方,跟个垃圾老师,再加上一群平庸的同学。其实最根本的原因还是我自己,所谓物以类聚,人以群分。冥冥之中好像有一股神奇的力量把不同档次的人拉在一起,如果你觉得你身边的人不行,你首先得先看看你自己。 高口悲剧结束,下面是BEC中级和CET口语,还有两个月时间,全力以赴,务必拿下。有了这两个证,年底的JOB-HUNT,路要好走的多,简历倒是拿出来,也更有底气。 2010/3/14
个人分类: 生活点滴|3120 次阅读|1 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-24 19:03

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部