私はPhdの仕事の一部である問題があります。バイナリ文字列を分割する方法は?
私はピクセルを表す24 bits
のシーケンスを持っています。最も左側の8 bits
はピクセルのred
コンポーネントを与え、8 bits
はコンポーネントを与え、最も右側の8 bits
はblue
コンポーネントを与える。ピクセルの赤、緑、青の成分は、それぞれ0(2進数00000000)〜255(2進数11111111)の値をとることができます。
このピクセルの色が、純粋な赤、緑、白または黒に幾何学的に最も近いかどうかを特定する必要があります。 RGB成分(r1, g1, b1)
と(r2,g2,b2)
を有する2つの色の間の幾何学的距離は、純粋な黒のRGB値が(0, 0, 0)
あり、純白が(255, 255, 255)
であり、純粋な赤は(255, 0, 0)
であり、純粋な青色(0, 0, 255)
ある
d = ((r1-r2)^2 + (g1-g2)^2 + (b1-b2)^2)^1/2
によって与えられます。
私の仕事は、これらの5つの色のどれがピクセルP
の色に最も近いかを特定することです。
例えば画素が000000001111111100000110
で表される場合、
- (バイナリで)赤色成分=
00000000
= 0(ベース10) - 緑成分=
11111111
(バイナリで)= 255 - =(バイナリで)
00000110
= 6
だから(ベース10)は、PのRGB値が青色成分である(ベース10)(0、255、6)
Euclidean Distance of P from pure black (RGB = (0,0,0)):
d = ((0 - 0)^2 + (255 - 0)^2 + (6 - 0)2))^1/2 = 65061^1/2
Euclidean Distance of P from pure white (RGB = (255, 255, 255)):
d = ((0 - 255)^2 + (255 - 255)^2 + (6 - 255)2))^1/2 = 127026^1/2
Euclidean Distance of P from pure red (RGB = (255, 0, 0)):
d = ((0 - 255)^2 + (255 - 0)^2 + (6 - 0)^2))^1/2 = 130086^1/2
Euclidean Distance of P from pure green (RGB = (0, 255, 0)):
d = ((0 - 0)^2 + (255 - 255)^2 + (6 - 0)^2))^1/2 = 36^1/2
Euclidean Distance of P from pure blue (RGB = (0, 0, 255)):
d = ((0 - 0)^2 + (255 - 0)^2 + (6 - 255)^2))^1/2 = 127026^1/2
上記から、Pは純粋な緑に最も近いことがわかります。 Pは、2色以上から等距離にある場合は、出力 "あいまい"
サンプル入力する必要があります
5 // The first line contains an integer N(1<=N<=100), which is the number of input pixels to follow.
101111010110011011100100
110000010101011111101111
100110101100111111101101
010111011010010110000011
000000001111111111111111
サンプル出力:あなたは24ビットの番号を持っている場合は、として
White
White
White
Green
Ambiguous
そして、あなたは何をしようとしたのですか? –
@Thomas申し訳ありませんが、私はCS(アルゴリズムとデータ構造)について多くの背景を持つ必要はありません。私の例では、数学を使って問題を解決する方法を示していますが、デモを作成するための作業コードが必要です – Anatoly
なぜC#でタグ付けされているのですか?これを解決する簡単なプログラムは、PythonやJuliaのようなスクリプト言語で作成する方が簡単だと思われます。 –