Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/numberoverzero/kmeans
python wrapper for a basic c implementation of the k-means algorithm
https://github.com/numberoverzero/kmeans
Last synced: 17 days ago
JSON representation
python wrapper for a basic c implementation of the k-means algorithm
- Host: GitHub
- URL: https://github.com/numberoverzero/kmeans
- Owner: numberoverzero
- License: mit
- Created: 2013-08-24T21:02:33.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-03-26T16:36:40.000Z (over 9 years ago)
- Last Synced: 2024-10-07T09:06:28.077Z (about 1 month ago)
- Language: Python
- Homepage:
- Size: 301 KB
- Stars: 24
- Watchers: 3
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
kmeans
===================
.. image:: https://travis-ci.org/numberoverzero/kmeans.png?branch=master
:target: https://travis-ci.org/numberoverzero/kmeanspython wrapper for a basic c implementation of the k-means algorithm.
**Please review the limitations before using in any capacity where strict
accuracy is required. There is no overflow detection, and negatives are not
supported. tuple values cannot exceed 255.**Installation
===================
::pip install kmeans
Usage
===================
::import kmeans
means = kmeans.kmeans(points, k)``points`` should be a list of tuples of the form ``(data, weight)`` where
``data`` is a list with length 3.For example, finding four mean colors for a group of pixels::
pixels = [
[(15, 20, 25), 1], # [(r,g,b), count]
[(17, 31, 92), 5],
# ... Lots more ...
]centers = kmeans.kmeans(pixels, 4)
In this case, the weights passed in may be the frequency of the pixels occuring
in an image, or some preference to pull the means towards a color.Limitations
===================All values must be **non-negative** **integers**, with the following
restrictions::r, g, b [0, 255] (uint8_t)
count [0, 4294967295] (uint32_t)
maximum points 4294967296 (uint32_t)
maximum means 256 (uint8_t)
max iterations 65536 (uint16_t)
max tolerance 65536 (uint16_t)Inspiration
===================http://charlesleifer.com/blog/using-python-to-generate-awesome-linux-desktop-themes/
I wanted to apply the implementation there to images much larger than 200x200.
Running a 4k x 3k image was approaching 60 seconds on a nice computer, so I
decided to rewrite the kmeans implementation in c.Contributors
===================* chinatsu_ - 32bit compatibility
.. _chinatsu: https://github.com/chinatsu