Skip to content

Spellstaker/Seam-Carving

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Seam Carving

Introduction

This project implements the method described in the paper: http://www.cs.jhu.edu/~misha/ReadingSeminar/Papers/Avidan07.pdf

It provides image resizing, and object removal given a 2d boolean numpy array.

The energy function used is the sum of absolute difference of horizontal and vertical adjacent pixels.

Usage

Images are represented as 3d numpy arrays. They can be read using various libraries, OpenCV is used here.

This module provides two functionalities, resizing images and removing objects from a boolean mask.

Reading Images

import cv2
img = cv2.imread('test.png')

Creating Seam Carve Object

from seam import SeamCarve
sc_img = SeamCarve(img)

Resizing

Reduces width first, and then height.

sc_img.resize(new_height, new_width)

Object Removal

Pixel coordinates with a True value will be removed.

sc_img.remove_mask(mask)

Retrieve Image Array

sc_img.image()

Example

Resizing a 400 x 400 image to 300 x 300

import cv2
from seam import SeamCarve

img = cv2.imread('test.png')

sc_img = SeamCarve(img)
sc_img.resize(new_height=300, new_width=300)


cv2.imshow('original', img)
cv2.imshow('resized', sc_img.image())
cv2.waitKey(0)

Original Resized

Removing a mask

import cv2
from seam import SeamCarve

img = cv2.imread('test.png')
mask = cv2.imread('mask.png', 0) != 255

sc_img = SeamCarve(img)
sc_img.remove_mask(mask)


cv2.imshow('original', img)
cv2.imshow('removed', sc_img.image())
cv2.waitKey(0)

Original Mask

Removed

About

This python script uses seam carving algorithm to resize images and for object removal.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages