2%程欠損したバイト列からjpeg画像を復元する方法。
16進数文字列(img_string)からバイト列(b)に変換し、numpyのresize関数を用いjpeg画像に復元することを試みています。
しかし、現状欠損したデータから無理やりresizeしているためか、画像全体に斜め方向に線が入るようなノイズが出ます。
欠損した文字列でも、jpegを復元できる方法はないでしょうか?
宜しくお願いいたします。
b = bytes.fromhex(img_string) img_array = np.fromstring(b,dtype ='uint8') #バイトデータ→ndarray変換 # img_array = np.reshape(img_array,(240,320))#エラーでた # img_array=np.newaxis(img_array,(-1,-1)) #エラー出た img_array=np.resize(img_array,(240,320)) #dec_img = cv2.imdecode(img_array, 0) pil_img = Image.fromarray(img_array)
情報不足で申し訳ありません。通信モジュールで画像の長距離伝送を行いたいのですが、モジュールの都合で画像を64バイトずつ分割して送信する必要がありました。
1「2%程欠損したバイト列」「欠損した文字列」 対処したいデータはどのようなデータなのでしょうか(なぜに文字列という言葉が)? 欠損してるというからには、「元の真なるデータ」と「今あるデータ」とを比較しているはずですが、それらはそれぞれ何でしょうか? また、それらのもつどんな数値(HDD等に保存されている状態でのバイト数やら、画像の縦横サイズやら)を比較しているのでしょうか?
---[元の真データ]は送信前の画像をバイト列に変換したもの、[今あるデータ]とは受信した文字列のことです。
通信途中でバイト列が欠落してしまうことがあるということです。
2「画像全体に斜め方向に線が入るようなノイズが出ます。」 これもどんな状態なのでしょうか? 「画面全体が斜めのノイズしかない(砂嵐画面のような)」か、「元の画像が確認できるが、斜めに線が何本かノイズが"入った"状態」か など。 可能であれば結果の画像を貼ってみてはいかがでしょうか?
---画像全体に斜め方向に線が入るようなノイズが出ます。→現在では誤り率の低減(0.6%)に成功し、このノイズは消えました。
しかし、↓画像のように不規則なノイズが入ります。
データの欠落は不可避(しかもどこで欠落するかわからない)なので、不足したバイト列からきれいに復元はやはり難しいでしょうか?
回答3件
あなたの回答
tips
プレビュー