Armadilloフォーラム

LCDに特定の色が正しく表示されない現象について

hiyama

2022年8月4日 19時32分

お世話になっております。

現在、almaddilo-410を使用しております。
表示モニタに映像が表示されるのですが、特定の色(グレー色)のみ上手く表現できない問題を抱えております。
ソフト側で制御できるものなのかハードウェアが原因なのか切り分けさせていただきたいと考えています。
もしソフトウェアの設定やソース修正で解決できる可能性がありましたら、いただけますでしょうか。

以下のような情報がございましたらいただきたいです。
・表示モニタ調整用のビデオパラメータファイルの場所とファイル名
・パラメータファイルの各項目内容
・変更した際に再構成が必要であればその手順・方法

<現象>
LCDに特定の色が正しく表示されない。

・特定の色「グレー色(灰色)」が実際の色よりも薄く表示される
・特定の色「グレー色(灰色)」に緑と赤の色が表示される

<確認したいこと>
・armadilloの設定やソース修正のみで、本現象の解決は可能か

<わかっていること>
・表示されている=ドットクロックの設定は問題ない認識。
・バックライト設定では明るさの調整のため、対応できない。

コメント

溝渕です。

すみません。事前にいくつか教えてください。

ハードウェア構成はどのようになっていますか?

Armadillo-410 液晶モデル開発セット をご利用でしょうか?
# ドットクロックを設定しているとのことなので、多分違うと思って確認させてもらっています

> <現象>
> LCDに特定の色が正しく表示されない。
>
> ・特定の色「グレー色(灰色)」が実際の色よりも薄く表示される
> ・特定の色「グレー色(灰色)」に緑と赤の色が表示される

この現象をこちらで再現するのに必要な情報をご提供いただくことは可能ですか?

> <わかっていること>
> ・バックライト設定では明るさの調整のため、対応できない。

上記、どのような意味でしょうか?

「バックライト設定を行うことで、グレーの色が正しく表示されるようになるが、同時に明るさも変化してしまう為に、この方法は使えない。」という意味と捉えて良いでしょうか?

情報不足申し訳ありません。

>ハードウェア構成はどのようになっていますか?
>Armadillo-410 液晶モデル開発セット をご利用でしょうか?
液晶モデル開発キットではなく、LCDは個別のものを使用しています。

> <現象>
> LCDに特定の色が正しく表示されない。
>この現象をこちらで再現するのに必要な情報をご提供いただくことは可能ですか?
現在、既存モデルから新モデルのLCDに置き換え評価を行っている状況です。
xy色度の仕様が既存モデルと新モデルで異なるため、表現できない色座標が存在するためではないかと考えております。
本来情報を開示したいのですが社外秘のため、大変申し訳ございませんが開示することが難しい状況です。
勉強不足で恐縮ですが一番知りたいことは、ソフト側の設定で色の調整が可能なのか無理なのかが知りたいことであります。

※可能な範囲での画像を添付いたします。

ファイル ファイルの説明
灰色不正.PNG グラデーションされたグレー(灰色)の場合正常に表現されない色がある。
色.PNG 特定の色(グレー(灰色))の場合赤や緑のドットが出現する。

溝渕です。

> 一番知りたいことは、ソフト側の設定で色の調整が可能なのか無理なのかが知りたいことであります。

ソフトで色の調整は可能と思いますが、どの色をどの色に変換しますか? もし明確に変換テーブルが作成できるのであれば、(描画速度は著しく低下すると思いますが)LCDドライバ内等から変換可能と思います。

まずは、意図した色に表示されない理由を調査するのが良いかなと思います。

まずは誤認される色を調べ、その色のみの画像を用意してみてください。その画像を表示した状態で、オシロスコープでLCDの信号線を確認してみてください。

恐らくですが、LCDが期待する波形を作り出せていないのではないかと推測しています。

情報をありがとうございます。
まずは色の特定から進め、原因究明いたします。

表現できない24bitカラーについて特定しました。
オシロスコープが現在手元に無いため手配中ですが、色変換の仕組みについてご教授いただきたい点がございます。

現在、LCDへ送信している18bitデータの特定を進めております。
24bitカラーコードを18bitで表現できるようにarmadillo仕様のRGB565カラーへ変換していると思いますが、
変換テーブル等は存在するでしょうか?それとも計算処理でカラーコードを変換しているのでしょうか?
勉強不足で大変恐縮ですが何卒ご教授いただけると幸いです。

溝渕です。

> 現在、LCDへ送信している18bitデータの特定を進めております。
> 24bitカラーコードを18bitで表現できるようにarmadillo仕様のRGB565カラーへ変換していると思いますが、
> 変換テーブル等は存在するでしょうか?それとも計算処理でカラーコードを変換しているのでしょうか?

質問を質問で返して申し訳ございませんが、LCDへの描画はどのように実行されていますか?

例えば、RGB888の画像ファイルをフレームバッファにそのまま書き込むと、フレームバッファがRGB565である為に正しく表示されないと思います。

もし正しく表示されているのであれば、ユーザーランド(アプリケーション)でRGB565の画像を作っていると思いますが、いかがでしょうか?

溝渕様、コメントいただきありがとうございます。

> 質問を質問で返して申し訳ございませんが、LCDへの描画はどのように実行されていますか?
> 例えば、RGB888の画像ファイルをフレームバッファにそのまま書き込むと、フレームバッファがRGB565である為に正しく表示されないと思います。
> もし正しく表示されているのであれば、ユーザーランド(アプリケーション)でRGB565の画像を作っていると思いますが、いかがでしょうか?
armadillo側で色を変換していると勘違いしておりました申し訳ございません。
アプリケーションもRGB565画像を使用しております。
調査当初はLCDの色域が若干変更されているため、armadillo側の設定を変更しなければいけないと考えておりましたが
そのような設定は無いと理解しました。
既存ディスプレイでは正しく表示されていますので、やはりLCD側で何か欠陥があるものと考えております。

溝渕です。

> 既存ディスプレイでは正しく表示されていますので、やはりLCD側で何か欠陥があるものと考えております。

LCDはRGB888ですか?

Armadillo-410は最大でRGB各6bitである為、LCDの各(RGB)信号線の最上位bit(MSB)側に、Armadillo-410の信号を接続する必要がありますが、そのようになっていますか?

例えば、Rの場合だと次のようになるかと思います。

Armadillo-410 R5 <-> LCD R7
Armadillo-410 R4 <-> LCD R6
:(省略)
Armadillo-410 R0 <-> LCD R2
未接続 LCD R1
未接続 LCD R0

> LCDはRGB888ですか?
インターフェースは18bitで、色深度は262Kです。
RGB各6bitで構成させれております。
信号線について今一度確認します。

補足ですが単色での赤・緑・青・黒・白は正しく表示されることはわかっており、
どうやらグラデーション表示する際に表示できない色が存在します。
(少しずつ薄くすると表示できない境界値が存在し線のように表示される)

溝渕です。

> 補足ですが単色での赤・緑・青・黒・白は正しく表示されることはわかっており、
> どうやらグラデーション表示する際に表示できない色が存在します。
> (少しずつ薄くすると表示できない境界値が存在し線のように表示される)

正しく表示できない色があるわけではなく、隣のドットに依存して色がおかしくなるのでしょうか?
# LCDが正常動作している場合、理解が困難な挙動と思います

以前仰っていた、

> 表現できない24bitカラーについて特定しました。

はどのように確認されましたか?

>正しく表示できない色があるわけではなく、隣のドットに依存して色がおかしくなるのでしょうか?
単色での確認をしましたので隣のドットに依存しているわけではないと考えております。

>> 表現できない24bitカラーについて特定しました。
>はどのように確認されましたか?
グラデーションで境界値の色を特定し、その特定した色をペイントソフトでPNG画像として作成し確認しました。
単色のはずがモザイクがかかったような表示となる現象です。
色域が関係しているのか、表現できない色の境界値があるような現象です。
例えば、RGB[64,128,192]のような色だと明るい青色でモザイクがかかった色で表示されてしまいますが、
この色よりも濃かったり、薄かったりすると色は正しく表示される現象です。

溝渕です。

単色のRGBファイルを作って、そのまま描画してみていただけますか。

例えば情報は、
RGB[64,128,192]
だと、
RGB565[8,32,24]
なので、
01000 001000 11000 = 0x4118
となります。

解像度が、WQVGA(320×240)の場合は、
320x240 = 76800
なので、次のように画像が作成できます。

[pc]$ echo -en "\x18\x41" > base.bin
[pc]$ for i in {0..76799};do cat base.bin >> rgb.bin; done
[pc]$ od -x rgb.bin 
0000000 4118 4118 4118 4118 4118 4118 4118 4118
*
0454000

作成した画像を、次のように描画してみてください。

[armadillo]# cat rgb.bin > /dev/fb0

溝渕様
返信が遅くなり申し訳ありません。

原因が判明し解決いたしました。
LCDのクロック仕様理解に誤りがあり、LCDとArmadilloとの接続方法を誤ったため発生した現象でした。
ファイル作成方法までご教授いただきありがとうございました。
(単色のRGBファイルを作成し、新と旧でのLCDの色の見え方を比較したところ、明らかに色が異なっておりました。)
本件、クローズとさせていただきます。