Byakuren 乙個 C 實現的主題色提取庫

2021-09-11 09:29:15 字數 2397 閱讀 1363

好久沒發文章了,藉著 byakuren 開源的檔口炒炒冷飯吧。

影象主題色是從一張影象中提取出來最能代表這張主色調的多種顏色。 也就是說在一幅色彩斑斕的裡面,各種不同顏色的數量就對應著該顏色在圖 片中的比例,程式可以通過計算中不同顏色的畫素數來算出主題色。

提取的演算法在我之前的部落格中有說明。在 byakuren 中其實用的就是之前部落格中講的一些演算法。

除去上面兩種演算法, byakuren 還提供了將這兩種演算法結合起來的 mix 演算法。

byakuren 是我前兩年寫的乙個主題色提取庫,也是繼 thmclrx 之後的 c 版實現,個人認為**質量比舊版的 thmclrx 要高。並且它實際上經過了企業級的驗證,在某相關的公司已經歡快跑了有些年頭了。

在經過相關人員的同意下,我也算把這雪藏了好久的**給開源出來了。

byakuren

聖 白蓮(ひじり びゃくれん, hiziri byakuren )是系列作品《東方 project 》中的角色,首次登場於《東方星蓮船》。

雖然已經入了佛門,但是不知道什麼原因卻被妖怪敬仰著。她從來沒有像童話故事中的魔法使那樣,念誦著咒語治退妖怪。使用的力量完全是**的,一點都不像是聖人,雖然並沒有人目擊到她與人類為敵,但其實已徹底成為妖怪的同伴了。

好吧,總之本人是個東方控,所以基本上專案名都跟東方有關。

其實詳細的使用方法在文件中就有說明。

不過這裡還是簡單介紹一下吧。

clone

先把**給下下來,你也可以把它 clone 下來。總之倉庫位址是:github.com/xadillax/by…。

make

然後跑到目錄下執行make

$ make byakuren複製**
你將得到乙個byakuren.a的靜態鏈結庫。

這個時候你只要拿著這個靜態鏈結庫,然後順便在你的專案中把頭檔案引進來就可以了。

#include

"byakuren.h"

複製**

api

我們假設你有bkr_rgb* rgb的畫素資訊,以及uint32_t color_count的畫素總數兩個變數,下面分別給出三個樣例。具體的 api 解析還請去文件觀摩。

octree

bkr_color_stats stats[256];

bkr_octree_node* root = bkr_build_octree(rgb, color_count, 256);

int colors = bkr_octree_calculate_color_stats(root, stats);

bkr_release_octree(root);複製**

colors就是主題色數量了,傳進去的stats就會接收到主題色的具體資訊了。

min-diff
bkr_color_stats stats[256];

bkr_mindiff_parameter param;

param.gray_offset = 5;

param.palette = null;

int colors = bkr_mindiff_calculate_color_stats(rgb, color_count, stats, ¶m);複製**

colorsstats如上所述。

mix
bkr_color_stats stats[256];

bkr_mindiff_parameter param;

param.gray_offset = -1;

param.palette = null;

int colors = bkr_mix_calculate_color_stats(rgb, color_count, 256, ¶m, stats);複製**

colorsstats如上所述。

可能有人想看看效果,我這裡就放個效果圖給大家看看吧。

其中 octree 和 mix 兩個演算法的主題色最大數量引數傳的都是 16 。

效果預覽

你可以拿它來寫一些主題色提取的東西。

你也可以拿它來完成其它語言的主題色提取庫的封裝,如 python 、 lua 等等。歡迎反饋給我。

把乙份自己覺得還不錯的**開源出來的感覺特爽,尤其是這種重見天日的感覺。ヘ|・∀・|ノ*~●

主成分分析實現的乙個心得

主成份分析 principal component analysis,pca 也叫做主成份變換 主分量分析或 l karhunen loeve 變換,是建立在統計特徵基礎上的多維 如多波段 正交線 性變換。它是遙感影象處理中最常用也是最有用的變換演算法之一。這次我要實現乙個主成分分析演算法,圖是做出...

主成分分析實現的乙個心得

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!主成份分析 principal component analysis,pca 也叫做主成份變換 主分量分析或 l karhunen loeve 變換,是建立在統計特徵基礎上的多維 如多波段 正交線 性變換。它是遙感影象處理中最常用也是最有用的變換演...

寫乙個服務的主函式

定義全域性變數 define svcname text svcname service status gsvcstatus service status handle gsvcstatushandle handle ghsvcstopevent null 服務主函式 void winapi svcm...