1

Floyd-Steinberg Dithering

Unsolved
Computer Vision

Difficulty: 6 | Problem written by Sakar Ghimire
Problem reported in interviews at

Apple
Facebook
Google
Netflix

Write a program to implement the Floyd-Steinberg dithering in a given 2D matrix (grayscale image).

Use the Floyd and Steinberg error diffusion filter for dividing up the error: 

     X    7

3    5    1           

 

Sample Input:
<class 'numpy.ndarray'>
im: [[ 51 67 219 213 312] [ 11 21 361 281 91] [ 5 66 6 5 5]]

Expected Output:
<class 'numpy.ndarray'>
[[ 51 69 223 213 255] [ 0 0 255 255 91] [ 9 76 7 5 5]]

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Debitis eveniet velit at dignissimos minus, itaque adipisci perspiciatis quasi consectetur quam.

Mollitia magnam earum inventore quam doloribus sunt vero aliquid beatae distinctio voluptas, sapiente repellendus ratione nesciunt facilis ab quod doloribus, cumque vel qui eaque quae id aspernatur possimus blanditiis voluptatum.

Repellat sapiente qui cumque illum quisquam consequuntur molestias beatae, amet ducimus quisquam reiciendis harum officia, itaque optio et, veritatis nihil maxime, nobis tempore illo atque fuga ducimus mollitia. Distinctio rem laborum nisi eos numquam amet pariatur quas saepe ut natus, culpa sequi quos inventore atque eaque, id mollitia facere ipsa quam porro eius impedit exercitationem rem iste totam, debitis quibusdam impedit dignissimos ratione corporis error delectus temporibus aut laboriosam? Ex ratione omnis ducimus laudantium aliquam sunt laborum obcaecati eveniet alias, explicabo est velit nobis sint veniam dolorum sed labore, esse a iste quos beatae, unde distinctio itaque sed corporis quos provident cupiditate accusantium fugiat vitae.

This is a premium feature.
To access this and other such features, click on upgrade below.

Ready.

Input Test Case

Please enter only one test case at a time
numpy has been already imported as np (import numpy as np)