예제 #1
0
 def charseg(self, line):
     """Segment a text line into potential character parts."""
     assert mean(line) > 0.5 * amax(line)
     line0 = amax(line) - line
     ccuts = contourcuts(line0,
                         maxdist=self.maxdist,
                         minrange=self.minrange,
                         mincdist=self.mincdist,
                         sigma=self.sigma,
                         r=self.rr,
                         s=self.s)
     line = maximum(0, line0 - ccuts)
     # line = line+self.ledge*maximum(0,roll(line,-1,1)-line)
     tracks = dplineseg2(line,
                         imweight=self.imweight,
                         bweight=self.bweight,
                         diagweight=self.diagweight,
                         debug=self.debug,
                         r=self.r)
     tracks = array(tracks < 0.5 * amax(tracks), 'i')
     tracks, _ = morph.label(tracks)
     self.tracks = tracks
     stracks = morph.spread_labels(tracks)
     rsegs = stracks * (line0 > 0.5 * amax(line0))
     if self.debug:
         figure("temp")
         subplot(311)
         morph.showlabels(tracks)
         subplot(312)
         morph.showlabels(stracks)
         subplot(313)
         morph.showlabels(rsegs)
         raw_input()
     return morph.renumber_by_xcenter(rsegs)
예제 #2
0
 def charseg(self, line):
     """Segment a text line into potential character parts."""
     assert mean(line) > 0.5 * amax(line)
     line = amax(line) - line
     # line = line+self.ledge*maximum(0,roll(line,-1,1)-line)
     tracks = dplineseg2(line,
                         imweight=self.imweight,
                         bweight=self.bweight,
                         diagweight=self.diagweight,
                         debug=self.debug,
                         r=self.r,
                         threshold=self.threshold)
     tracks = array(tracks < 0.5 * amax(tracks), 'i')
     tracks, _ = morph.label(tracks)
     self.tracks = tracks  # for debuggin
     stracks = morph.spread_labels(tracks)
     rsegs = stracks * (line > 0.5 * amax(line))
     if 0:
         figure("temp")
         subplot(311)
         morph.showlabels(tracks)
         subplot(312)
         morph.showlabels(stracks)
         subplot(313)
         morph.showlabels(rsegs)
         raw_input()
     return morph.renumber_by_xcenter(rsegs)
예제 #3
0
파일: lineest.py 프로젝트: beanyh/yeobaek
 def allchars():
     count = 0
     for fno,fname in enumerate(fnames):
         if fno%20==0: print fno,fname,count
         image = 1-ocrolib.read_image_gray(fname)
         try:
             seg = lineseg.ccslineseg(image)
         except:
             traceback.print_exc()
             continue
         seg = morph.renumber_by_xcenter(seg)
         for e in extract_chars(seg):
             count += 1
             yield e
예제 #4
0
 def allchars():
     count = 0
     for fno, fname in enumerate(fnames):
         if fno % 20 == 0: print fno, fname, count
         image = 1 - ocrolib.read_image_gray(fname)
         try:
             seg = lineseg.ccslineseg(image)
         except:
             traceback.print_exc()
             continue
         seg = morph.renumber_by_xcenter(seg)
         for e in extract_chars(seg):
             count += 1
             yield e
예제 #5
0
파일: lineest.py 프로젝트: beanyh/yeobaek
def blxlimages(image,shapedict,bls,xls):
    image = (image>ocrolib.midrange(image))
    if amax(image)==0: raise RecognitionError("empty line")
    seg = lineseg.ccslineseg(image)
    # ion(); subplot(311); imshow(image); subplot(312); morph.showlabels(seg); ginput(1,0.1); raw_input()
    seg = morph.renumber_by_xcenter(seg)
    blimage = zeros(image.shape)
    xlimage = zeros(image.shape)
    for sub,transform,itransform_add in extract_chars(seg):
        best = shapedict.predict1(sub)
        bli = bls[best].reshape(32,32)
        xli = xls[best].reshape(32,32)
        itransform_add(blimage,bli)
        itransform_add(xlimage,xli)
    return blimage,xlimage
예제 #6
0
def blxlimages(image, shapedict, bls, xls):
    image = (image > ocrolib.midrange(image))
    if amax(image) == 0: raise RecognitionError("empty line")
    seg = lineseg.ccslineseg(image)
    # ion(); subplot(311); imshow(image); subplot(312); morph.showlabels(seg); ginput(1,0.1); raw_input()
    seg = morph.renumber_by_xcenter(seg)
    blimage = zeros(image.shape)
    xlimage = zeros(image.shape)
    for sub, transform, itransform_add in extract_chars(seg):
        best = shapedict.predict1(sub)
        bli = bls[best].reshape(32, 32)
        xli = xls[best].reshape(32, 32)
        itransform_add(blimage, bli)
        itransform_add(xlimage, xli)
    return blimage, xlimage
예제 #7
0
파일: lineseg.py 프로젝트: AI42/ocropy
 def charseg(self,line):
     """Segment a text line into potential character parts."""
     assert mean(line)>0.5*amax(line)
     line = amax(line)-line
     # line = line+self.ledge*maximum(0,roll(line,-1,1)-line)
     tracks = dplineseg2(line,imweight=self.imweight,bweight=self.bweight,
                         diagweight=self.diagweight,debug=self.debug,r=self.r,
                         threshold=self.threshold)
     tracks = array(tracks<0.5*amax(tracks),'i')
     tracks,_ = morph.label(tracks)
     self.tracks = tracks # for debuggin
     stracks = morph.spread_labels(tracks)
     rsegs = stracks*(line>0.5*amax(line))
     if 0:
         figure("temp")
         subplot(311); morph.showlabels(tracks)
         subplot(312); morph.showlabels(stracks)
         subplot(313); morph.showlabels(rsegs)
         raw_input()
     return morph.renumber_by_xcenter(rsegs)
예제 #8
0
파일: lineseg.py 프로젝트: AI42/ocropy
 def charseg(self,line):
     """Segment a text line into potential character parts."""
     assert mean(line)>0.5*amax(line)
     line0 = amax(line)-line
     ccuts = contourcuts(line0,maxdist=self.maxdist,minrange=self.minrange,
                         mincdist=self.mincdist,sigma=self.sigma,r=self.rr,s=self.s)
     line = maximum(0,line0-ccuts)
     # line = line+self.ledge*maximum(0,roll(line,-1,1)-line)
     tracks = dplineseg2(line,imweight=self.imweight,bweight=self.bweight,
                         diagweight=self.diagweight,debug=self.debug,r=self.r)
     tracks = array(tracks<0.5*amax(tracks),'i')
     tracks,_ = morph.label(tracks)
     self.tracks = tracks
     stracks = morph.spread_labels(tracks)
     rsegs = stracks*(line0>0.5*amax(line0))
     if self.debug:
         figure("temp")
         subplot(311); morph.showlabels(tracks)
         subplot(312); morph.showlabels(stracks)
         subplot(313); morph.showlabels(rsegs)
         raw_input()
     return morph.renumber_by_xcenter(rsegs)
예제 #9
0
파일: lineseg.py 프로젝트: AI42/ocropy
 def charseg(self,line):
     """Segment a text line into potential character parts."""
     line = (line<0.5*(amax(line)+amin(line)))
     seg = ccslineseg(line)
     seg = morph.renumber_by_xcenter(seg)
     return seg
예제 #10
0
 def charseg(self,line):
     """Segment a text line into potential character parts."""
     line = (line<0.5*(amax(line)+amin(line)))
     seg = ccslineseg(line)
     seg = morph.renumber_by_xcenter(seg)
     return seg