Align the Images properly












-1















Hi I am trying to get the handwritten data only from an image, for that I took a empty image and a filled one and then I am doing ImageChops.difference to get the data out of it.
The problem is right now with the alignment of images, both are not equally aligned in terms of depth, so the results are not correct.



from PIL import Image, ImageChops



def compare_images(path_one, path_two, diff_save_location):
"""
Compares to images and saves a diff image, if there
is a difference

@param: path_one: The path to the first image
@param: path_two: The path to the second image
"""
image_one = Image.open(path_one).convert('LA')
image_two = Image.open(path_two).convert('LA')

diff = ImageChops.difference(image_one, image_two)
if diff.getbbox():
diff.convert('RGB').save(diff_save_location)


if __name__ == '__main__':
compare_images('images/blank.jpg',
'images/filled.jpg',
'images/diff.jpg')


This is the result which I got.
enter image description here



the result which I am looking for:
enter image description here



Can anyone help me with this.
Thanks.










share|improve this question























  • You have some fixed template for the image, this means you have the coordinate information of the handwritten texts, then you can use the coordinate information to crop the handwriiten text areas.

    – flamelite
    Nov 16 '18 at 7:33






  • 1





    The term to search for is "Image Registration". If you look at the grids on the left side of your image you'll see they are much more horizontally displaced from each other than on the right side of the image which means you have "bad stuff" going on as well as normal displacements - e.g. your scan may not be flat. This is beyond Pillow's capabilities and you'll likely need to look to OpenCV. Look here at ORB and friends docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/…

    – Mark Setchell
    Nov 16 '18 at 9:07











  • Could you post links to the filled.jpg and filled.jpg images?

    – Cris Luengo
    Nov 16 '18 at 18:35
















-1















Hi I am trying to get the handwritten data only from an image, for that I took a empty image and a filled one and then I am doing ImageChops.difference to get the data out of it.
The problem is right now with the alignment of images, both are not equally aligned in terms of depth, so the results are not correct.



from PIL import Image, ImageChops



def compare_images(path_one, path_two, diff_save_location):
"""
Compares to images and saves a diff image, if there
is a difference

@param: path_one: The path to the first image
@param: path_two: The path to the second image
"""
image_one = Image.open(path_one).convert('LA')
image_two = Image.open(path_two).convert('LA')

diff = ImageChops.difference(image_one, image_two)
if diff.getbbox():
diff.convert('RGB').save(diff_save_location)


if __name__ == '__main__':
compare_images('images/blank.jpg',
'images/filled.jpg',
'images/diff.jpg')


This is the result which I got.
enter image description here



the result which I am looking for:
enter image description here



Can anyone help me with this.
Thanks.










share|improve this question























  • You have some fixed template for the image, this means you have the coordinate information of the handwritten texts, then you can use the coordinate information to crop the handwriiten text areas.

    – flamelite
    Nov 16 '18 at 7:33






  • 1





    The term to search for is "Image Registration". If you look at the grids on the left side of your image you'll see they are much more horizontally displaced from each other than on the right side of the image which means you have "bad stuff" going on as well as normal displacements - e.g. your scan may not be flat. This is beyond Pillow's capabilities and you'll likely need to look to OpenCV. Look here at ORB and friends docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/…

    – Mark Setchell
    Nov 16 '18 at 9:07











  • Could you post links to the filled.jpg and filled.jpg images?

    – Cris Luengo
    Nov 16 '18 at 18:35














-1












-1








-1








Hi I am trying to get the handwritten data only from an image, for that I took a empty image and a filled one and then I am doing ImageChops.difference to get the data out of it.
The problem is right now with the alignment of images, both are not equally aligned in terms of depth, so the results are not correct.



from PIL import Image, ImageChops



def compare_images(path_one, path_two, diff_save_location):
"""
Compares to images and saves a diff image, if there
is a difference

@param: path_one: The path to the first image
@param: path_two: The path to the second image
"""
image_one = Image.open(path_one).convert('LA')
image_two = Image.open(path_two).convert('LA')

diff = ImageChops.difference(image_one, image_two)
if diff.getbbox():
diff.convert('RGB').save(diff_save_location)


if __name__ == '__main__':
compare_images('images/blank.jpg',
'images/filled.jpg',
'images/diff.jpg')


This is the result which I got.
enter image description here



the result which I am looking for:
enter image description here



Can anyone help me with this.
Thanks.










share|improve this question














Hi I am trying to get the handwritten data only from an image, for that I took a empty image and a filled one and then I am doing ImageChops.difference to get the data out of it.
The problem is right now with the alignment of images, both are not equally aligned in terms of depth, so the results are not correct.



from PIL import Image, ImageChops



def compare_images(path_one, path_two, diff_save_location):
"""
Compares to images and saves a diff image, if there
is a difference

@param: path_one: The path to the first image
@param: path_two: The path to the second image
"""
image_one = Image.open(path_one).convert('LA')
image_two = Image.open(path_two).convert('LA')

diff = ImageChops.difference(image_one, image_two)
if diff.getbbox():
diff.convert('RGB').save(diff_save_location)


if __name__ == '__main__':
compare_images('images/blank.jpg',
'images/filled.jpg',
'images/diff.jpg')


This is the result which I got.
enter image description here



the result which I am looking for:
enter image description here



Can anyone help me with this.
Thanks.







python-3.x image image-processing python-imaging-library






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 16 '18 at 7:12









Sachin SharmaSachin Sharma

419




419













  • You have some fixed template for the image, this means you have the coordinate information of the handwritten texts, then you can use the coordinate information to crop the handwriiten text areas.

    – flamelite
    Nov 16 '18 at 7:33






  • 1





    The term to search for is "Image Registration". If you look at the grids on the left side of your image you'll see they are much more horizontally displaced from each other than on the right side of the image which means you have "bad stuff" going on as well as normal displacements - e.g. your scan may not be flat. This is beyond Pillow's capabilities and you'll likely need to look to OpenCV. Look here at ORB and friends docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/…

    – Mark Setchell
    Nov 16 '18 at 9:07











  • Could you post links to the filled.jpg and filled.jpg images?

    – Cris Luengo
    Nov 16 '18 at 18:35



















  • You have some fixed template for the image, this means you have the coordinate information of the handwritten texts, then you can use the coordinate information to crop the handwriiten text areas.

    – flamelite
    Nov 16 '18 at 7:33






  • 1





    The term to search for is "Image Registration". If you look at the grids on the left side of your image you'll see they are much more horizontally displaced from each other than on the right side of the image which means you have "bad stuff" going on as well as normal displacements - e.g. your scan may not be flat. This is beyond Pillow's capabilities and you'll likely need to look to OpenCV. Look here at ORB and friends docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/…

    – Mark Setchell
    Nov 16 '18 at 9:07











  • Could you post links to the filled.jpg and filled.jpg images?

    – Cris Luengo
    Nov 16 '18 at 18:35

















You have some fixed template for the image, this means you have the coordinate information of the handwritten texts, then you can use the coordinate information to crop the handwriiten text areas.

– flamelite
Nov 16 '18 at 7:33





You have some fixed template for the image, this means you have the coordinate information of the handwritten texts, then you can use the coordinate information to crop the handwriiten text areas.

– flamelite
Nov 16 '18 at 7:33




1




1





The term to search for is "Image Registration". If you look at the grids on the left side of your image you'll see they are much more horizontally displaced from each other than on the right side of the image which means you have "bad stuff" going on as well as normal displacements - e.g. your scan may not be flat. This is beyond Pillow's capabilities and you'll likely need to look to OpenCV. Look here at ORB and friends docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/…

– Mark Setchell
Nov 16 '18 at 9:07





The term to search for is "Image Registration". If you look at the grids on the left side of your image you'll see they are much more horizontally displaced from each other than on the right side of the image which means you have "bad stuff" going on as well as normal displacements - e.g. your scan may not be flat. This is beyond Pillow's capabilities and you'll likely need to look to OpenCV. Look here at ORB and friends docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/…

– Mark Setchell
Nov 16 '18 at 9:07













Could you post links to the filled.jpg and filled.jpg images?

– Cris Luengo
Nov 16 '18 at 18:35





Could you post links to the filled.jpg and filled.jpg images?

– Cris Luengo
Nov 16 '18 at 18:35












1 Answer
1






active

oldest

votes


















0














This site may be helpful: https://www.learnopencv.com/image-alignment-feature-based-using-opencv-c-python/ . The main idea is to first detect keypoints use SIFT, SURF or other algorithms in both images; then match the keypoints from the empty image with the keypoints from the handwritten image, to get a homography matrix; then use this matrix to align the two images.



After image alignment, post processing may be needed due to illumination or noise.






share|improve this answer
























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53333063%2falign-the-images-properly%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    This site may be helpful: https://www.learnopencv.com/image-alignment-feature-based-using-opencv-c-python/ . The main idea is to first detect keypoints use SIFT, SURF or other algorithms in both images; then match the keypoints from the empty image with the keypoints from the handwritten image, to get a homography matrix; then use this matrix to align the two images.



    After image alignment, post processing may be needed due to illumination or noise.






    share|improve this answer




























      0














      This site may be helpful: https://www.learnopencv.com/image-alignment-feature-based-using-opencv-c-python/ . The main idea is to first detect keypoints use SIFT, SURF or other algorithms in both images; then match the keypoints from the empty image with the keypoints from the handwritten image, to get a homography matrix; then use this matrix to align the two images.



      After image alignment, post processing may be needed due to illumination or noise.






      share|improve this answer


























        0












        0








        0







        This site may be helpful: https://www.learnopencv.com/image-alignment-feature-based-using-opencv-c-python/ . The main idea is to first detect keypoints use SIFT, SURF or other algorithms in both images; then match the keypoints from the empty image with the keypoints from the handwritten image, to get a homography matrix; then use this matrix to align the two images.



        After image alignment, post processing may be needed due to illumination or noise.






        share|improve this answer













        This site may be helpful: https://www.learnopencv.com/image-alignment-feature-based-using-opencv-c-python/ . The main idea is to first detect keypoints use SIFT, SURF or other algorithms in both images; then match the keypoints from the empty image with the keypoints from the handwritten image, to get a homography matrix; then use this matrix to align the two images.



        After image alignment, post processing may be needed due to illumination or noise.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 16 '18 at 16:38









        Kaiwen ChangKaiwen Chang

        6019




        6019
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53333063%2falign-the-images-properly%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Florida Star v. B. J. F.

            Danny Elfman

            Lugert, Oklahoma