人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

この画像は(77のところは抜いて)最低なんビットで表せるでしょうか?
赤がふたます黒が4ます。として。

(ちなみに自分の似顔絵です)

1519214772
●拡大する

●質問者: SE**.M
●カテゴリ:コンピュータ 科学・統計資料
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● tea_cup
●34ポイント

符号化をどうするかの問題ですが、一例として。
キャンバスを横4縦2固定、タイルの色を2bit(白、黒、青、赤)固定とすると
■■■■
■■
は、0101010100111100 の16bitで表現できます。


a-kuma3さんのコメント
4×2の情報がない

tea_cupさんのコメント
キャンバスを横2bit(1-4)、縦1bit(1,2)で表現して、先頭にサイズ情報を入れると19bitで表現されますが、キャンバスサイズを固定すれば16bitで表現できます。

a-kuma3さんのコメント
>> キャンバスサイズを固定すれば << 暗黙の了解を導入して良いのであれば、 - キャンバスのサイズは、4×2 - 黒が四つ:0 - 白・赤・赤・白:1 と規定すれば、01 で表現できちゃう。

SE**.Mさんのコメント
2bit?ですか?>暗黙の了解を入れた場合

ぽけっとしすてむさんのコメント
暗黙の了解(辞書) が使えるなら「この画像パターンを表示せよ」というON/OFFの指定のみとなりますので、1bitで表現できることになります。 ※加筆修正をしました。

2 ●
●33ポイント

とりあえず、一例として、一般的な画像形式で保存してみた画像のサイズを記載してみます。
そういうことを聞いているんじゃないとも思いますが。

png形式

見えにくいので拡大してみます。(なんかぼやけちゃいましたが元は4×2の画像のはず)
png形式

さて、この画像を色んな形式で実際に保存してみました。
16色ビットマップ:126 バイト
256色ビットマップ:1,086 バイト
24ビットビットマップ:78 バイト
png:129 バイト
jpeg:709 バイト

大体そんな感じですが、jpgにしたら何故か色がくすんだり、元のデータによって形式変換後のデータサイズが変わったりと安定はしてません。
一番小さいのが24ビットのビットマップ(78バイト)ですが、他にも画像形式は沢山あるので、これが最低ではないということは明らかでしょう。
容量制限のきつかった時代のファミコンの画像形式などは面白いので一読の価値ありです。
http://hackgames.geo.jp/Memo/NesGazou.html
http://postd.cc/nes-graphics-part-1/

さて、一般的な画像ファイル形式は汎用性が大切なので、ある程度あらゆる画像に対応する必要があります。
https://ja.wikipedia.org/wiki/Windows_bitmap
などを読めば、わかります。
先頭にBM (0x42, 0x4d)という2byteのデータがあり、ちゃんとBMP形式であるかのチェックなどに使われるわけです。ここが違ってるとそもそも破損ファイルとして扱うとか。
次に4byteのファイルサイズを格納してる領域があります。
他にも、ビットマップでも何色のビットマップであるか、などなど。
今後の拡張のためやらキリをよくするために予約領域なんていうのもあったりします。
そして、ぶっちゃけこれらの情報、全部いるか? ってなるといらないものも多いし、無駄に大きな格納領域を使っちゃっているところも多い(かも)。(容量削減を追及するにあたっては)

つまるところは、事前の決め事はなに? っていうのがはっきりしないと、最低って何なのか明らかになってきません。
例えば、使う色の種類が、(黒、白、赤、+α)の4種類だと2bitで表せますし、16色使うのであれば4bitかかりますが、
それでもやり方が色々あって、
・使う色の一覧を外部に用意してそこから参照する場合
・使う色の一覧を画像ファイル自体に持っていてそこから参照する方法
・ビットの並び順のデータ(各ピクセル)に色情報を直接持つ方法(RGBなどで)
とかですかね。詳しくないんですけれど(突っ込み待ち)



要は、既存の(一般的な)ファイル形式でだと、最低なんビットの画像ファイルがあるかの答えはあるのでしょうけれど、一般的でないファイル形式も含めると答えは見つけるのが困難。
なら、自分でファイル形式を作るとなると、どこまでが決め事なのか? で答えが変わってくるはずです。
例えば、例に上がった画像の幅、高さを内部に持つとしても、最大で8×8に対応するならば
高さに3bitの情報、幅に3bitの情報で6ビット追加になるわけですが(実際には3bitは扱いづらいので4bitずつ使うことも多かったりするとかしないとか)、
横の最大は4マスだったら、2bitで済みますし、縦の最大が2マスだったら1bitしか使いませんので、合わせて3bitで済む訳です。

似顔絵が4パターンしかなくって、どの似顔絵の画像なのか? を選ぶ方式だと、2bitで済んだりするわけですよね。それが決め事が何なのか? っていうことです。

縦横のサイズ、使う色の種類の上限が決まってたら、その中で最適な(あるいは最適に近い、独自の)ファイル形式は考えられると思います。
実際はそれプラス、全体で扱う画像の量や種類も加味して考えるのでしょうけれど。(例えば、全ての画像の幅が4ならば、画像サイズは高さのデータだけでよい、サイズが固定ならば画像サイズなんていらない、その他もろもろ)

長い割に多分いろいろ間違ってて、質問の意図も理解できてなくて自分でもなんだかなーと思いますが、寂しいので回答してみました。

なんのために知りたい情報なのか? を追記するとわたしよりもまともでわかりやすい回答が得られると思います。

以上


3 ● kaoato
●33ポイント

R 0000
1111

G 0000
1001

B 0000
1001
---------------
R(赤)G(緑)B(青)形式で分解すると上記のようになります。
それぞれ、8bit(1バイト)なので、計 8x3=24bitで表すことは可能だと思います。


>4×2の情報がない

縦横情報を1バイトx1バイトで持つことにすると、

8bitx2 =16bit



サイズ情報、色情報で、24bit+16bit =40bit (=5バイト)

=================

情報であり限りは、暗黙の規定が必要なのは必要。

文字だって、キャラクターコードが規定されてることを前提に、情報をビット化?できるわけで・・。

また、文字(形)情報にしても、昔はビット情報だったものが、今はベクター情報になってる。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ