Git Product home page Git Product logo

davidnazw / imagequilting Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 3.0 9 KB

The goal of this assignment is to implement the image quilting algorithm for texture synthesis and transfer, described in this SIGGRAPH 2001 paper by Efros and Freeman. Texture synthesis is the creation of a larger texture image from a small sample. Texture transfer is giving an object the appearance of having the same texture as a sample while preserving its basic shape (see the face on toast image above). For texture synthesis, the main idea is to sample patches and lay them down in overlapping patterns, such that the overlapping regions are similar. The overlapping regions may not match exactly, which will result in noticeable edges. To fix this, you will compute a path along pixels with similar intensities through the overlapping region and use it to select which overlapping patch from which to draw each pixel. Texture transfer is achieved by encouraging sampled patches to have similar appearance to a given target image, as well as matching overlapping regions of already sampled patches. In this project, you will apply important techniques such as template matching, finding seams, and masking. These techniques are also useful for image stitching, image completion, image retargeting, and blending.

MATLAB 100.00%

imagequilting's Introduction

ImageQuilting

The goal of this assignment is to implement the image quilting algorithm for texture synthesis and transfer, described in this SIGGRAPH 2001 paper by Efros and Freeman.

  • Texture synthesis is an algorithm creating a larger texture image from a small set of samples.
  • Texture transfer is a method providing an object with the same texture as the given sample while preserving its basic shape.

Approaches

For texture synthesis, one approach is to sample patches and then lay them down in overlapping patterns to create similar regions. However, noticeable edges may be generated due to unmatched regions. To address this problem, a path along pixels with similar intensities through the overlapping regions is computed. Moreover, this path is used to select the optimal patch for pixel drawing.

Texture transfer is achieved by encouraging the specific patch to have a similar appearance to a given image, as well as match overlapping regions of other sampled patches.

Implementation

This project implements several techniques such as template matching, finding seams and masking, which are useful in image stitching, image completion, image retargeting and blending.

Citation

@inproceedings{Efros:2001:IQT:383259.383296,
 author = {Efros, Alexei A. and Freeman, William T.},
 title = {Image Quilting for Texture Synthesis and Transfer},
 booktitle = {Proceedings of the 28th Annual Conference on Computer Graphics and Interactive Techniques},
 series = {SIGGRAPH '01},
 year = {2001},
 isbn = {1-58113-374-X},
 pages = {341--346},
 numpages = {6},
 url = {http://doi.acm.org/10.1145/383259.383296},
 doi = {10.1145/383259.383296},
 acmid = {383296},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {image-based rendering, texture mapping, texture synthesis},
}

imagequilting's People

Contributors

changanvr avatar davidnazw avatar dujianding avatar zipincmpt avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.