追記:pashango2さんの回答とコメントを拝見して「なるほど」と思ったので追記します。
HSVは以下のように白色光成分Wと一番強い光成分Vの比率がSaturationで白色光以外の2つの色だけが突出した部分hの2色の割合でHueが決まります。自分の回答は「目でみた色味の違い」ではなく「計算を単純化した大雑把な判定方法」でしかありません。
0.0................1.0
R |****|**********
G |****|
B |****|**
<-W-><----h---->
<------V------->
R,G,Bを直接用いて判定したとしても意味的に大雑把さに大した違いはなさそうに思います。「色空間上の特定の色と同じとみなせるか」といった判断ではどのような空間を使うにせよ基準の色との距離をなんらかの計算で求めて「近い」「遠い」を判断しますが、大雑把な計算ではなく「目で見る色味の違い」に配慮するなら、pashango2さんコメントにあるlab空間での色距離で判断するのが合理的に思えます。しかしそうまで厳密に考えるのではなく「大雑把」でよいならRGBやHSVで「適当に範囲を決めて」計算するというのでも「それはそれで一つの方法」だと思います。
「ほぼ赤」「ほぼ青」「ほぼ緑」「それ以外」のようなファジーな判定をしたいということかと思います。
S(彩度)とV(明度)の考慮の仕方がわかりません。
-
明度
色味を判定する前提なら明度はあまり関係しないと考えてよいと思います。もちろん0だと色相に意味がでないため「それ以外」という判断になると思います。「暗すぎて色をはっきり視認できない」ことを「ほぼ赤」とはいえないという考え方なら「明度がある一定値以上」という条件を付ければとりあえずよいと思います。
-
彩度
彩度が0.0ならグレースケールになるので色味はなく「それ以外」ということになるでしょう。0.0以外だったとしても「ピンク=白色光+赤」は「ほぼ赤」とはいえないという判断をするなら彩度が低すぎる場合は赤、青、緑のいずれかとは見做さないことになるでしょうから、明度と同様に「彩度がある一定値以上」という条件を付けることになると思います。
明度や彩度の閾値をどの程度に設定するかは応用(目的)次第と思います。
ライブラリを使用しない
ライブラリーを使用するかどうかの問題ではなく、目的に合った仕様をどう設定するかの問題だと思います。