首先申明我是报着学习的态度提问的。多多探讨。
问题起源于这里
http://bbs.chinaddu.com/viewthre ... p;extra=&page=3
先说明我的意图是找出一幅去色图象上色阶值是128的所有像素的分布。
方法也是看前面老师的,加我自己的,共3种,肯定有其他方法,请补充。可能我的步骤或操作有问题所以我写具体点,请指正。还有就是我试验中的问题,能解答不?
我使用的图
第一种,用渐变映射。首先把原图去色,用渐变映射把纯白设为50%,另外纯黑在49%、51%及其他地方。(最精确也只能如此了)这时图象乍看变为了仅由0,0,0及255,255,255两色构成的图,但细看,或直方图上看,含其他的灰度色,再证明下所选的区域是否为想获得区域,因为像3,3,3,这样的点也存在,不方便观察,我把使用渐变映射后的图合并了,再使用色阶把白色滑块调到2,这样应该没错吧?再在通道下载入选取,反选,再在原图上del掉其他区域,得该方法下得到的选区。
渐变映射
渐变映射后局部放大的图象
渐变映射的选区,红色为128的部分,与选区部分重叠
渐变映射的区域的直方图
结论:扩大了选区。先想可能是渐变映射使用的是百分比,难道是换算后的差?但细想又不对,比如映射后图象含3,3,3这样暗的点,再误差也不会到这个地方啊,我设定的都是黑色啊!
第二种,用阀值。我自己做能想到的方法是,先对去色图使用阀值,值为128,注意这时128~255的像素都变为255了。再用通道把高于128的区域及当前区域选出来,在原图上把其它部分del了,这是第一步;第二步,在剩下的像素中把阀值设为129,此时128~255的部分中就只有128显示为黑色了。再反相在通道中载入,回到原图挖出这部分。
第一次阀值后
阀值后的选区
阀值的区域的直方图
结论:选区精确多了,直方图上可以看出来,除了128这个灰度的图象,仅多了127的图象,可以说效果不错了,但不是精确的。
顺便提下,在原图用了一次阀值到128,再使用时,怎么滑块在128以下的数字时画面会出现变化?应该不会啊,不过今天试验的时候又正常了。
第三种,我自己想的简单方法,就是在原图上与想要的色阶值相差很大的地方(也可以把上面方法找的区域的空白处,反正就是不要在该区域出现128的值的点),或者干脆把画布调大,空白地方建。比如建个矩形,填充128的灰度色。然后用色彩范围命令,容差为0(先我不知道可以设0,用的1,就有误差了)。点这个明显的矩形,此时即把所见图象中128灰度的地方选出来了,不管矩形是原图还是另一个层上。直接反选删除原图。
自己弄的区域的直方图
结论:这时得到的区域在直方图上看就笔直的一条线,为想选的128了,无多余部分。
总结完了,我又把原图,即彩色的图打开一看,发现即使我用方法3得到的选区,在该图上也表现的颜色深浅不一,不管是色相(废话)还是k值还是hsb模式下的任意一个值,都不同。仅选了亮度直方图中间段的值,是一段值,郁闷了,当初有这个想法的时候原贴讨论的是彩色图象上选出某个值或某段值,我这样弄似乎选某段还不行,而且是灰度条件下才能选某个值。那么有什么更好的方法能在彩色图中的直方图的rgb通道下把直方图变成一条线呢?甚至在各个通道下?有什么实际意义呢?
[
本帖最后由 dyingass 于 2007-11-28 11:56 编辑 ]