图像分析啊
图片有底色吗?底色和字的反差有多大?
字是手写的还是计算机内字库的字,知道字体字号吗?先确定这些因素再考虑该用怎样的算法。。

解决方案 »

  1.   

    如果是在一个图层中,而图片很复杂,那几乎是不可能的事吗。除非字在另一个图层。
      

  2.   

    我加了你的QQ了,如果是这样,我觉得不是很难,但算法可能要好好想一下了。
      

  3.   

    那么你是不需要知道到底是什么字的咯?只要将黑色部分的范围找到就可以了,这很简单。
      

  4.   

    其实就是在如白纸上按了个手指印,然后我扫描到电脑里,我想知道这个指纹在这个图片上的矩形区域.就是这样的
      

  5.   

    如果你的图像是二值的,即只有黑白两种颜色,那么分别从图像的四个方向开始逐行进行扫描,直到扫描到任何一个点为黑点位置,记下它的位置,进行四次扫描后就可以知道矩形的外框范围了。如果不是二值的图像,你需要确定一个阈值,以它来判断什么颜色是属于文字的。如果不能用简单的阈值来处理,还要对图像进行先期的处理,把轮廓找出来才行。
      

  6.   

    写了以下这个简单的函数:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Bmp:TBitmap;
      FingerPrintRect:TRect;
      I,J:Integer;
    begin
      Bmp:=TBitmap.Create();
      try
        Bmp.LoadFromFile('k:\zhiwen.bmp');
        FingerPrintRect.Left:=Bmp.Width;
        FingerPrintRect.Right:=0;
        FingerPrintRect.Top:=Bmp.Height;
        FingerPrintRect.Bottom:=0;
        for J:=0 to Bmp.Height-1 do begin
          for I:=0 to Bmp.Width-1 do begin
            if Bmp.Canvas.Pixels[I,J]<RGB(100,100,100) then begin
              if I<FingerPrintRect.Left then begin
                FingerPrintRect.Left:=I;
              end;
              if J<FingerPrintRect.Top then begin
                FingerPrintRect.Top:=J;
              end;
              if I>FingerPrintRect.Right then begin
                FingerPrintRect.Right:=I;
              end;
              if J>FingerPrintRect.Bottom then begin
                FingerPrintRect.Bottom:=J;
              end;
            end
            else begin
            end;
          end;
        end;    Bmp.Canvas.DrawFocusRect(FingerPrintRect);
        Image1.Picture.Bitmap.Assign(Bmp);
      finally
        Bmp.Free;
      end;
    end;但是由于你给的图像的右下脚有一个深色点,所以程序错误的把那里作为右边界了,如果希望得到比较正确的边界,可以尝试先对图像做一遍去噪声的操作,把噪声点去除。。
    另外这里所使用的阈值颜色RGB(100,100,100)是一个经验值,根据你拍摄照片当时的光线以及CCD当时的对比度设置,这个值是不确定的。
    指纹识别是个大课题,希望你还是看看数字图像处理,有好多东西要学呢。。
    如果还有问题可以到这里直接找我:
    http://www.tonixsoft.com/phpbb2