2012-02-16 61 views
0

我有23张图片,它们都是14个像素×14个像素。找到差异 - 14×14照片

在每一个白色背景上有一个字母(255 255 255 RGB)。

我想比较它们并找到唯一的空白像素来识别该字母。

例如,在比较过程之后,我想说像素数(3宽度,2高度)为白色的图像14x14肯定是“A”。

可能吗?

我有主循环检查每一个像素,但现在我卡:

function getpixelat($img,$x,$y) { 
    $rgb = imagecolorat($img,$x,$y); 
    $r = ($rgb >> 16) & 0xFF; 
    $g = ($rgb >> 8) & 0xFF; 
    $b = $rgb & 0xFF; 
    return $r.$g.$b; 
} 

for($y=$inity; $y<$h; $y++) { 
    for($x=$initx; $x<$w; $x++) { 
     $pixel = getpixelat($img,$x,$y); 
    } 
} 
+0

我为什么得到-1?这不是一个有效的问题吗? – KingBOB 2012-02-16 20:15:47

+2

否决而没有留下意见是这样的残酷行为,+ 1撤消 – tomexsans 2012-02-16 20:17:32

+1

我还没有投票,但你的问题是,无论是甚广,还是真的窄。从本质上讲,你在问OCR,这是一个解决的问题。所以答案是肯定的,这是可能的。使用图书馆。 – 2012-02-16 20:18:11

回答

2

要找到独特的空白像素为一个特定的字母:

  1. 你想创建面具每封信。从一个空白面具开始,例如所有条目设置为零的14x14阵列。
  2. 然后,对于有问题的字母(如A),标记每个你知道像素是空白。
  3. 对于所有剩余的字母,将其比作面膜A.如果任何其他字母都有相同的空像素,标志着该像素为不可用。
  4. 对所有其他字母重复该过程,即将每个字母与其他每个字母进行比较。

一旦你有一个完整的面具所有字母,每个掩码比较每隔面具,以确保你没有任何重复。如果你不这样做,你可能有一些你可以参考的东西,以确定你正在处理的是哪一封信。