1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

画像処理の可逆性とその応用

Posted at

画像は最も身近なファイル

画像を計算機上で扱うようになって何年経つのでしょうか。今では当たり前に、パソコン、スマートフォンで画像を見ています。テキストファイルよりも、ドキュメントファイルよりも、間違いなく最も身近なファイルは画像であることでしょう。一日に一回はスマートフォンのカメラを起動する、そんな時代になってきたのです。
画像ファイルが多く使われるようになって、益々その処理についての需要も大きくなっているということで、おそらく私のような画像処理を専門にする人よりも、そこらへんの女子高生のほうがスマートフォンでの画像処理に詳しいというのは想像に難くないわけです。
ということで、これほど身近になった画像というファイル形式について、その可能性は今まで以上に広がっても良いのではないかと思うのです。
ここでは画像処理の可逆性について触れ、私の運営するホームページにて用いられている技術を例に、その応用を探っていきます。

画像の可逆性

画像処理、例えば色変化、フィルタ、アフィン変換など、様々ありますが、それらは、可逆的なもの、不可逆的なものに大別できると考えます。

可逆的なもの

  • 単純な色変化
  • 反転
  • 90度の回転

など

不可逆的なもの

  • アフィン変換
  • フィルタ
  • モルフォロジ演算
  • リサイズ

など

ここで、可逆、不可逆の定義をしなければなりません。
そもそも画像処理とは、画像全体の集合を$I$としたときの写像$f:I\longrightarrow I$ であると考えます。
可逆とは、その逆写像$f^{-1}$が容易に計算できるという写像$f$であり、不可逆とは$f^{-1}$が容易に計算できない、もしくは数学的に不可能であるというものであると、ここでは定義します。
さて、一次元、長さ3のメディアンフィルタ$f_{MF}$を例にしてみると、計算例は以下のようになります。

\begin{align}
f_{MF}([3\ 2\ 9\ 0\ 2\ 6]) & = [3\ \mbox{med}(3, 2, 9)\ \mbox{med}(2, 9, 0)\ \mbox{med}(9, 0, 2)\ \mbox{med}(0, 2, 6)\ 6] \\
 & = [3\ 3\ 2\ 2\ 2\ 6]
\end{align}

ただし、$\mbox{med}(x, y, z) = y\ \ \ (\mbox{when}\ \ x\leq y\leq z)$

つまり、$[3\ 3\ 2\ 2\ 2\ 6]$から$[3\ 2\ 9\ 0\ 2\ 6]$が推測できれば可逆ということになろうかと思いますが、これは確実に推測不可能であるため、この例からもメディアンフィルタが不可逆な画像処理であるということが直感的にわかったのではないかと思います。
ただし、

f_{MF}([3\ 3\ 3\ 3\ 3\ 3]) = [3\ 3\ 3\ 3\ 3\ 3]

のような場合は成り立ちません。すなわち恒等写像$f(a\in I) = a\in I$ではいけないということです。

メディアンフィルタの実際

下の画像は私の書いたものですが、どちらかがオリジナル、どちらかがメディアンフィルタ適用のものです。さて、判別できるでしょうか。

書いた本人ですらわかりませんが、一応左がオリジナルです。
このように、メディアンフィルタの、実際の違いはほとんどわからないということなのです。
ほとんど同じに見えますが、ハッシュ値は以下のように異なります。
オリジナル: bbe27c5a63dac211d4d640ed878b5aad
メディアンフィルタ適用: 0990b70ffdc4dc0effa7991a806cc677

不可逆画像処理の応用

それでは、私の運営するホームページにおける、不可逆画像処理の応用例についてですが、まずそのホームページについての説明が必要でしょう。
ホームページは、簡単に言うとpixivの書作品バージョンのようなものです。ただし、アカウントを用いず、匿名で画像をアップロードできるようにしてあります。まだあまり利用されてませんが...
アカウントという形をとらないということで、問題になったのが画像の削除です。つまり間違って画像をアップロードしたとき、思い直して画像を消したくなったとき、本人だけがその画像を削除できるようにするにはどうしたらよいか。
そこで、以下のような仕組みを考えたわけです。

  1. 画像がアップロードされたと同時に、画像ファイルのハッシュ値を計算し、データベースへ保存
  2. 画像のEXIF情報を削除
  3. 画像にメディアンフィルタ等の不可逆画像処理を適用、恒等写像でないか確認
  4. 処理が適用された画像をホームページに載せる

ホームページにある画像のオリジナルの画像をアップロードすることで、ハッシュ値の比較により、アップロード者本人であることを確認でき、画像が削除されるというわけです。ホームページにある画像を使ってその画像を削除することはできない、ということです。
EXIF情報の削除だけでいいのでは、と思うかもしれませんが、そもそもEXIF情報のない画像がアップロードされる可能性もあり、このような手法をとっています。
欠点としては、オリジナルの画像ファイルをなくした場合、削除できないということです。
これはアカウントの認証等にも応用できる気がしますが、このオリジナルのファイルをなくしたときにどうしようもなくなるという欠点が大きすぎるため、現実的ではないかもしれません。このような限られた状況でのみうまくはたらくのでしょう。

主張

そもそも、本来はアカウントの不要なウェブサービスが多すぎる気がします。アカウントは個人情報の流出の危険と常に隣り合わせであり、私などはアカウント作成の段階で面倒になる人です。
当ホームページでは、画像のアップロード時にいちいちニックネームの入力を促していますが、その手間で安全性が担保されるのであれば、それは嬉しいことだと思っています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?