プログラミング、アカデミック、何か面白いこと。 記載されているものは基本的に私が所属する団体とは関係がありません。

  1. アカデミック
  2. 63 view

[ImageProcessing]肌色で2値化

HSV表色系

一般的によくつかわれているRGBからHSVに変換するには以下の式を用いる。
V

S

H

ソースコード

require 'imlib2'
include Math

def rgb2hsv(r, g, b)
    h = s = v = 0.0

    r = r.to_f
    g = g.to_f
    b = b.to_f
    color = [r, g, b]
    cmax = color.max
    cmin = color.min
    v = cmax
    
    c = cmax - cmin
    if cmax == 0.0
        s = 0.0
    else
        s = c/cmax
    end

    if s != 0.0
        if r == cmax
            h = (g - b)/c
        elsif g == cmax
            h = 2 + (g - r)/c
        elsif b == cmax
            h = 4 + (r - g)/c
        end
        h *= 60.0
        if h < 0.0
            h += 360.0
        end
    end
    return h, s, v
end

# Main part
img = Imlib2::Image.load("srcimg/src.jpg")
minHue = 0.0
maxHue = 30.0

img.h.times do |y|
    img.w.times do |x|
        color = img.pixel(x, y)
        
        h, s, v = rgb2hsv(color.r, color.g, color.b)

        col = 255
        if h >= minHue and h <= maxHue
            col = 0
        end
        color.r = color.g = color.b = col
        img.draw_pixel(x, y, color)
    end
end

img.save("dstimg/binarize.jpg")

実行してみる。

入力画像

src

出力画像

dst

アカデミックの最近記事

  1. [触ってみた]Microsoft Quantum Development Kit

  2. Tensorboardを使ってニューラルネットワークと学習の状況を可視化する

  3. [機械学習]各種Pythonライブラリ入りの実験用Dockerイメージを作った

  4. [OpenCV][Ruby]Webページのデザイン崩れ確認の自動化

  5. [機械学習]本番導入までの道のり

関連記事

PAGE TOP