From 21b934bd2d58334e89a47ce4f5fb587db9cc523c Mon Sep 17 00:00:00 2001 From: micio Date: Mon, 7 Sep 2009 22:50:54 +0000 Subject: [PATCH] Bazaar:Leptonica - Added text baselines finding with demo git-svn-id: svn://ultimatepp.org/upp/trunk@1566 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- bazaar/PixRaster/Lept-PageSeg.cpp | 67 +++++++++++++++++++++++++ bazaar/PixRaster/Lept-Skew.cpp | 18 +++++++ bazaar/PixRaster/PixRaster.h | 4 ++ bazaar/TestLeptonica/BaseLine.cpp | 56 +++++++++++++++++++++ bazaar/TestLeptonica/PageLayout.cpp | 2 +- bazaar/TestLeptonica/TestLeptonica.h | 1 + bazaar/TestLeptonica/TestLeptonica.lay | 5 +- bazaar/TestLeptonica/TestLeptonica.upp | 1 + bazaar/TestLeptonica/keystone.png | Bin 0 -> 39141 bytes bazaar/TestLeptonica/main.cpp | 1 + 10 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 bazaar/TestLeptonica/BaseLine.cpp create mode 100644 bazaar/TestLeptonica/keystone.png diff --git a/bazaar/PixRaster/Lept-PageSeg.cpp b/bazaar/PixRaster/Lept-PageSeg.cpp index 4f5b3174a..8e22fcd09 100644 --- a/bazaar/PixRaster/Lept-PageSeg.cpp +++ b/bazaar/PixRaster/Lept-PageSeg.cpp @@ -29,4 +29,71 @@ bool PixRaster::GetRegionsBinary(int page) } +/* +// text baseline finding routine +Array PixRaster::FindBaselines(int page) +{ + PTA *pta; + NUMA *numa; + int res; + l_int32 x, y; + Array ptArray; + + if(IsEmpty()) + return Array(); + page = getTruePage(page); + + PIX *pix = pixaGetPix(pixa, page, L_CLONE); + numa = pixFindBaselines(pix, &pta, 0); + pixDestroy(&pix); + if(!numa || !pta) + return Array(); + for(int iPoint = 0; iPoint < ptaGetCount(pta); iPoint++) + { + res = ptaGetIPt(pta, iPoint, &x, &y); + if(res) + { + numaDestroy(&numa); + ptaDestroy(&pta); + return Array(); + } + ptArray.Add(Point(x, y)); + } + numaDestroy(&numa); + ptaDestroy(&pta); + return ptArray; +} +*/ + +// text baseline finding routine +Array PixRaster::FindBaselines(int page) +{ + NUMA *numa; + int res; + l_int32 y; + Array intArray; + + if(IsEmpty()) + return Array(); + page = getTruePage(page); + + PIX *pix = pixaGetPix(pixa, page, L_CLONE); + numa = pixFindBaselines(pix, NULL, 0); + pixDestroy(&pix); + if(!numa) + return Array(); + for(int iLine = 0; iLine < numaGetCount(numa); iLine++) + { + res = numaGetIValue(numa, iLine, &y); + if(res) + { + numaDestroy(&numa); + return Array(); + } + intArray.Add(y); + } + numaDestroy(&numa); + return intArray; +} + END_UPP_NAMESPACE diff --git a/bazaar/PixRaster/Lept-Skew.cpp b/bazaar/PixRaster/Lept-Skew.cpp index e699d54ff..fd3c1d945 100644 --- a/bazaar/PixRaster/Lept-Skew.cpp +++ b/bazaar/PixRaster/Lept-Skew.cpp @@ -110,4 +110,22 @@ bool PixRaster::FindSkewSweepAndSearch( } +bool PixRaster::DeskewLocal(int page) +{ + if(IsEmpty()) + return false; + page = getTruePage(page); + + PIX *sPix = pixaGetPix(pixa, page, L_CLONE); + PIX *dPix = pixDeskewLocal(sPix, 0, 0, 0, 0.0, 0.0, 0.0); + pixDestroy(&sPix); + if(!dPix) + return false; + AddPIX(dPix, PIXRASTER_CLONE); + SeekPage(PIXRASTER_LASTPAGE); + pixDestroy(&dPix); + return true; +} + + END_UPP_NAMESPACE diff --git a/bazaar/PixRaster/PixRaster.h b/bazaar/PixRaster/PixRaster.h index adb902683..519c83630 100644 --- a/bazaar/PixRaster/PixRaster.h +++ b/bazaar/PixRaster/PixRaster.h @@ -238,6 +238,8 @@ class PixRaster : public Raster double minbsdelta, int page = PIXRASTER_CURPAGE); + bool DeskewLocal(int page = PIXRASTER_CURPAGE); + // NOTE : Leptonica has many more skew functions.... //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -276,6 +278,8 @@ class PixRaster : public Raster // top level page segmenting bool GetRegionsBinary(int page = PIXRASTER_CURPAGE) ; + // text baseline finding routine + Array FindBaselines(int page = PIXRASTER_CURPAGE); }; // END class PixRaster diff --git a/bazaar/TestLeptonica/BaseLine.cpp b/bazaar/TestLeptonica/BaseLine.cpp new file mode 100644 index 000000000..ad2d77ee9 --- /dev/null +++ b/bazaar/TestLeptonica/BaseLine.cpp @@ -0,0 +1,56 @@ +#include "TestLeptonica.h" + +static void BaseLine(PixRaster &pixRaster) +{ + CHECKR(pixRaster.DeskewLocal(), "Deskew error"); + Array intArray = pixRaster.FindBaselines(); + CHECKR(intArray.GetCount(), "FindBaselines error"); + PIX *pix = pixRaster; + int width = pixRaster.GetWidth(); + for(int iLine = 0; iLine < intArray.GetCount(); iLine++) + { + int y = intArray[iLine]; + for(int x = 0; x < width; x++) + pixSetPixel(pix, x, y, 1); + } + +} + +void TestLeptonica::onBaseLine() +{ + String fileName; + FileSelector fs; + PIX *pix; + + if(!PromptYesNo( + "[= [* Text baseline analysis demo]&&" + "Please select a scanned, 1 bpp text image&" + "you can take 'keystone.png' from TestLeptonica folder if you like&&" + "[* CONTINUE ??]]" + )) + return; + + fs.ReadOnlyOption(); + if(fs.ExecuteOpen("Please select image for text baseline analysis:")) + { + FileIn s; + if(!s.Open(~fs)) + { + PromptOK("Error opening image"); + s.Close(); + return; + } + + // Loads pixraster from source raster + CHECKR(pixRaster.Load(s), "Error loading image"); + s.Close(); + + // apply line removal algothithm + BaseLine(pixRaster); + + // refresh the PixRasterCtrl control with the new image contents + pixRasterCtrl.Reload(); + pixRasterCtrl.SetPage(0); + + } +} diff --git a/bazaar/TestLeptonica/PageLayout.cpp b/bazaar/TestLeptonica/PageLayout.cpp index fc2895a4f..e7a31be07 100644 --- a/bazaar/TestLeptonica/PageLayout.cpp +++ b/bazaar/TestLeptonica/PageLayout.cpp @@ -13,7 +13,7 @@ void TestLeptonica::onPageLayout() if(!PromptYesNo( "[= [* Page layout analysis demo]&&" - "Please select a scanned image with mixed text and graphics&" + "Please select a 1 bpp scanned image with mixed text and graphics&" "you can take one from TestLeptonica folder if you like&&" "[* CONTINUE ??]]" )) diff --git a/bazaar/TestLeptonica/TestLeptonica.h b/bazaar/TestLeptonica/TestLeptonica.h index f50846858..13757c117 100644 --- a/bazaar/TestLeptonica/TestLeptonica.h +++ b/bazaar/TestLeptonica/TestLeptonica.h @@ -28,6 +28,7 @@ class TestLeptonica : public WithTestLeptonicaLayout // button handlers void onLineRemoval(void); void onPageLayout(void); + void onBaseLine(void); void onQuit(void); // PIX raster diff --git a/bazaar/TestLeptonica/TestLeptonica.lay b/bazaar/TestLeptonica/TestLeptonica.lay index 0811f02b9..02b13e1b5 100644 --- a/bazaar/TestLeptonica/TestLeptonica.lay +++ b/bazaar/TestLeptonica/TestLeptonica.lay @@ -1,7 +1,8 @@ LAYOUT(TestLeptonicaLayout, 640, 400) - ITEM(Button, PageLayoutButton, SetLabel(t_("Page layout test")).LeftPosZ(8, 92).TopPosZ(32, 15)) + ITEM(Button, BaseLineButton, SetLabel(t_("Baseline test")).Tip(t_("Find baseline of text lines of a scanned page")).LeftPosZ(8, 92).TopPosZ(56, 15)) ITEM(Button, QuitButton, SetLabel(t_("\aQuit")).LeftPosZ(8, 92).BottomPosZ(9, 15)) ITEM(PixRasterCtrl, pixRasterCtrl, SetFrame(InsetFrame()).HSizePosZ(108, 8).VSizePosZ(8, 8)) - ITEM(Button, LineRemovalButton, SetLabel(t_("Line removal test")).LeftPosZ(8, 92).TopPosZ(8, 15)) + ITEM(Button, LineRemovalButton, SetLabel(t_("Line removal test")).Tip(t_("Removes horizontal lines from a scanned paper drawing")).LeftPosZ(8, 92).TopPosZ(8, 15)) + ITEM(Button, PageLayoutButton, SetLabel(t_("Page layout test")).Tip(t_("Finds the layout of a page, separating graphics from text")).LeftPosZ(8, 92).TopPosZ(32, 15)) END_LAYOUT diff --git a/bazaar/TestLeptonica/TestLeptonica.upp b/bazaar/TestLeptonica/TestLeptonica.upp index 16b296c75..2768d7129 100644 --- a/bazaar/TestLeptonica/TestLeptonica.upp +++ b/bazaar/TestLeptonica/TestLeptonica.upp @@ -8,6 +8,7 @@ file TestLeptonica.h, LineRemoval.cpp, PageLayout.cpp, + BaseLine.cpp, main.cpp; mainconfig diff --git a/bazaar/TestLeptonica/keystone.png b/bazaar/TestLeptonica/keystone.png new file mode 100644 index 0000000000000000000000000000000000000000..7b88eb6f5069b5b8afdeff46fb47c15bb85787a1 GIT binary patch literal 39141 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 SMLbym0000