質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.77%

R言語の画像復元プログラムを解読したい

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 245

masa_0705

score 9

R言語の画像復元プログラムの解読を行っているのですが、文中の(1),(2)式のように、要素が[i,j]から[i,j,1,1]へと変化した理由を教えていただきたいです。行パターンと列パターンの2系統が必要になったからだと考えているのですが、どうでしょうか。

library(survey)
library(imager)

n <- 256    #64
n2 <- n*n
img = load.image("House256.jpg")    #( "insects.jpg" )
grayimg = grayscale(img)
subi<-imsub(grayimg,x>=90)
subi<-imsub(subi,x<=256)
subi<-imsub(subi,y>=100)
subi<-imsub(subi,y<=256)
#subi<-imsub(grayimg,x>= 101)
#subi<-imsub(subi,x<=64)
#subi<-imsub(subi,y>=141)
#subi<-imsub(subi,y<=64)

subih<-subi
subiv<-subi
rsubih<-subi
rsubiv<-subi
rsubi<-subi
#plot(subi)
H <- hadamard(n)
T <- matrix(0, nrow=n, ncol=n)
suim <- matrix(0, nrow=n, ncol=n)
suiv <- matrix(0, nrow=n, ncol=n)
suih <- matrix(0, nrow=n, ncol=n)
rsuiv <- matrix(0, nrow=n, ncol=n)
rsuih <- matrix(0, nrow=n, ncol=n)
rsui <- matrix(0, nrow=n, ncol=n)

for (i in 1:n){
   for(j in 1:n){
      if(H[i,j]==0) {T[i,j]=-1} else {T[i,j]=1}
      (1)suim[i,j]=subi[i,j,1,1]
   }
}

suiv = T %*% suim / n

suih = t( T %*% t(suim) ) / n


# Fukugen

rsuiv = T %*% suiv

rsuih = t( T %*% t(suih) )

rsui = (rsuiv+rsuih)/2

for (i in 1:n){
   for(j in 1:n){
      (2)rsubi[i,j,1,1]=rsui[i,j]
   }
}

#rsubi=(rsubiv+rsubih)/2


もととなる論文を見て考えているのですが、確信が得られませんでした。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

回答依頼のお知らせから飛んできましたが,前回「私はR言語わかりません」って明言しているわけで…当然,コードが何書いてるのか良くわかりません.

字面の雰囲気的に,やってる内容はアダマール行列(の行)を直交基底として用いた基底変換ではないかと思います.
suivとsuihの2つを作って,復元時にこれら2つからの復元結果を足して2で割ることの意味はよくわかりません.

…というわけで,めっちゃあやふやですが,

  • (1) : Tにアダマール行列を作っているのではないでしょうか? Hの内容がどうなってるのかを調べてみると良いのではないでしょうか.
  • (2) : 画像subiの画素値をからなる行列submを作っているのでは?
  • (3) : 行列rsuiの要素値をrsubiの画素値に書込んでいるのでは?

と,想像します.

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/11/05 15:31

    確認不足で本当にすみませんでした。それでも回答をくださり本当にありがとうございます。いただいた回答をもとに再度考えてみたいと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る