Application and Elementary Matrices

Application - Recall

To summarize

### Practical Applications
A <- matrix(c(1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 
0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 
0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 
0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 
0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 
0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 
0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1), nrow = 11, ncol = 18, byrow = TRUE)
b <- c(1298, 1948, 465 , 605 , 451 ,  338 , 260 ,  183 ,  282 ,  127 ,  535)
library(pracma)
rref(A)
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
 [1,]    1    0    0    0    0    0    0    0    0     0    -1    -1    -1
 [2,]    0    1    0    0    0    0    0    0    0     0     1     0     0
 [3,]    0    0    1    0    0    0    0    0    0     0     0     1     0
 [4,]    0    0    0    1    0    0    0    0    0     0     0     0     1
 [5,]    0    0    0    0    1    0    0    0    0     0     0     0     0
 [6,]    0    0    0    0    0    1    0    0    0     0     0     0     0
 [7,]    0    0    0    0    0    0    1    0    0     0     0     0     0
 [8,]    0    0    0    0    0    0    0    1    0     0     0     0     0
 [9,]    0    0    0    0    0    0    0    0    1     0     0     0     0
[10,]    0    0    0    0    0    0    0    0    0     1     1     1     1
[11,]    0    0    0    0    0    0    0    0    0     0     0     0     0
      [,14] [,15] [,16] [,17] [,18]
 [1,]    -1    -1    -1    -1    -1
 [2,]     0     0     0     0     0
 [3,]     0     0     0     0     0
 [4,]     0     0     0     0     0
 [5,]     1     0     0     0     0
 [6,]     0     1     0     0     0
 [7,]     0     0     1     0     0
 [8,]     0     0     0     1     0
 [9,]     0     0     0     0     1
[10,]     1     1     1     1     1
[11,]     0     0     0     0     0
C <- cbind(A, b)
E <- rref(C)
E <- E[-11,]

Let us add the following (simple) constraints

G1 <- eye(8)
G2 <- matrix(rep(0, 80), 8, 10)
b2 <- c(266, 223, 140, 264, 137, 67, 130, 24)
G <- cbind(G1, G2, b2)
M <- rbind(E, G)
inv(M[,-19])
 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
    0    0    0    0    0    0    0    0    0     0     1     0     0     0
    0    0    0    0    0    0    0    0    0     0     0     1     0     0
    0    0    0    0    0    0    0    0    0     0     0     0     1     0
    0    0    0    0    0    0    0    0    0     0     0     0     0     1
    0    0    0    0    0    0    0    0    0     0     0     0     0     0
    0    0    0    0    0    0    0    0    0     0     0     0     0     0
    0    0    0    0    0    0    0    0    0     0     0     0     0     0
    0    0    0    0    0    0    0    0    0     0     0     0     0     0
    1    1    1    1    1    1    1    1    1     0    -1    -1    -1    -1
    1    0    0    0    0    0    0    0    0     1    -1     0     0     0
    0    1    0    0    0    0    0    0    0     0     0    -1     0     0
    0    0    1    0    0    0    0    0    0     0     0     0    -1     0
    0    0    0    1    0    0    0    0    0     0     0     0     0    -1
    0    0    0    0    1    0    0    0    0     0     0     0     0     0
    0    0    0    0    0    1    0    0    0     0     0     0     0     0
    0    0    0    0    0    0    1    0    0     0     0     0     0     0
    0    0    0    0    0    0    0    1    0     0     0     0     0     0
   -1   -1   -1   -1   -1   -1   -1   -1    0     0     1     1     1     1
 [,15] [,16] [,17] [,18]
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
    -1    -1    -1    -1
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
    -1     0     0     0
     0    -1     0     0
     0     0    -1     0
     0     0     0    -1
     1     1     1     1
inv(M[, -19]) %*% M[, 19]
 [,1]
  266
  223
  140
  264
  137
   67
  130
   24
   47
  199
  382
  311
   74
  123
  116
  152
  103
  488

Elementary Matrices

## Example 79
library(matlib)

Attaching package: 'matlib'
The following objects are masked from 'package:pracma':

    angle, inv
A <- matrix(c(1, 3, 2, 1, 2, 5, -2, -3, 2, 2, -3, -3, -4, -2, -1, 4), nrow = 4, ncol = 4, byrow=TRUE)
M <- cbind(A, diag(4))
library(pracma)
R <- rref(M)
Ainv <- R[, 5:8]
Ainv
            [,1]       [,2]       [,3]        [,4]
[1,]  0.58024691 -0.7037037  0.8641975 -0.02469136
[2,]  0.04938272  0.2592593 -0.1604938  0.06172840
[3,] -0.14814815  0.2222222 -0.5185185 -0.18518519
[4,]  0.56790123 -0.5185185  0.6543210  0.20987654
inv(A)
            [,1]       [,2]       [,3]        [,4]
[1,]  0.58024691 -0.7037037  0.8641975 -0.02469136
[2,]  0.04938272  0.2592593 -0.1604938  0.06172840
[3,] -0.14814815  0.2222222 -0.5185185 -0.18518519
[4,]  0.56790123 -0.5185185  0.6543210  0.20987654

Computing A-1

Re-doing the Application

### Practical Applications
A <- matrix(c(1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 1), nrow = 11, ncol = 18, byrow = TRUE)
b <- c(1298, 1948, 465, 605, 451,  338,  260,  183,  282, 127, 535)
C <- cbind(A, b)
library(pracma)
E <- rref(C)
E
                                                      b
 [1,] 1 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1483
 [2,] 0 1 0 0 0 0 0 0 0 0  1  0  0  0  0  0  0  0   605
 [3,] 0 0 1 0 0 0 0 0 0 0  0  1  0  0  0  0  0  0   451
 [4,] 0 0 0 1 0 0 0 0 0 0  0  0  1  0  0  0  0  0   338
 [5,] 0 0 0 0 1 0 0 0 0 0  0  0  0  1  0  0  0  0   260
 [6,] 0 0 0 0 0 1 0 0 0 0  0  0  0  0  1  0  0  0   183
 [7,] 0 0 0 0 0 0 1 0 0 0  0  0  0  0  0  1  0  0   282
 [8,] 0 0 0 0 0 0 0 1 0 0  0  0  0  0  0  0  1  0   127
 [9,] 0 0 0 0 0 0 0 0 1 0  0  0  0  0  0  0  0  1   535
[10,] 0 0 0 0 0 0 0 0 0 1  1  1  1  1  1  1  1  1  1948
[11,] 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0     0
E <- E[-11,]
G1 <- eye(8)
G2 <- matrix(rep(0, 80), 8, 10)
b2 <- c(266, 223, 140, 264, 137, 67, 130, 24)
G <- cbind(G1, G2, b2)
M <- rbind(E, G)
M2 <- M[,-19]
M3 <- cbind(M2, diag(18))
M4 <- rref(M3)
M4
                                                                              
 [1,] 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0 0 0  1  0  0
 [2,] 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0 0 0  0  1  0
 [3,] 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0 0 0  0  0  1
 [4,] 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0 0 0  0  0  0
 [5,] 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0 0 0  0  0  0
 [6,] 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0 0 0  0  0  0
 [7,] 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0 0 0  0  0  0
 [8,] 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0 0 0  0  0  0
 [9,] 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0  1  1  1  1  1  1  1  1 1 0 -1 -1 -1
[10,] 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0  1  0  0  0  0  0  0  0 0 1 -1  0  0
[11,] 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0  0  1  0  0  0  0  0  0 0 0  0 -1  0
[12,] 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0  0  0  1  0  0  0  0  0 0 0  0  0 -1
[13,] 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0  0  0  0  1  0  0  0  0 0 0  0  0  0
[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0  0  0  0  0  1  0  0  0 0 0  0  0  0
[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0  0  0  0  0  0  1  0  0 0 0  0  0  0
[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0  0  0  0  0  0  0  1  0 0 0  0  0  0
[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0  0  0  0  0  0  0  0  1 0 0  0  0  0
[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 -1 -1 -1 -1 -1 -1 0 0  1  1  1
                    
 [1,]  0  0  0  0  0
 [2,]  0  0  0  0  0
 [3,]  0  0  0  0  0
 [4,]  1  0  0  0  0
 [5,]  0  1  0  0  0
 [6,]  0  0  1  0  0
 [7,]  0  0  0  1  0
 [8,]  0  0  0  0  1
 [9,] -1 -1 -1 -1 -1
[10,]  0  0  0  0  0
[11,]  0  0  0  0  0
[12,]  0  0  0  0  0
[13,] -1  0  0  0  0
[14,]  0 -1  0  0  0
[15,]  0  0 -1  0  0
[16,]  0  0  0 -1  0
[17,]  0  0  0  0 -1
[18,]  1  1  1  1  1
Minv <- M4[, 19:36]
Minv %*% M[,19]
      [,1]
 [1,]  266
 [2,]  223
 [3,]  140
 [4,]  264
 [5,]  137
 [6,]   67
 [7,]  130
 [8,]   24
 [9,]   47
[10,]  199
[11,]  382
[12,]  311
[13,]   74
[14,]  123
[15,]  116
[16,]  152
[17,]  103
[18,]  488

Recall the Tora image

library(png)
### You need download from http://polytopes.net/Tora_color.png and store the directory currently you are working on.
x <- readPNG("Tora_color.png")
dim(x)
[1] 133  77   4
head(x[,,1])
          [,1]      [,2]      [,3]      [,4]      [,5]       [,6]      [,7]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.00000000 1.0000000
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.00000000 1.0000000
[3,] 0.9803922 0.9803922 0.9803922 0.9764706 0.9490196 0.93333333 0.9333333
[4,] 0.7019608 0.7019608 0.7137255 0.6549020 0.3058824 0.08627451 0.1019608
[5,] 0.7098039 0.7019608 0.7137255 0.6549020 0.3019608 0.09803922 0.1294118
[6,] 0.7019608 0.7019608 0.7137255 0.6588235 0.3450980 0.16078431 0.1215686
          [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[3,] 0.9372549 0.9372549 0.9372549 0.9372549 0.9372549 0.9372549 0.9372549
[4,] 0.1176471 0.1607843 0.1372549 0.1490196 0.1490196 0.1137255 0.1176471
[5,] 0.1450980 0.2039216 0.2000000 0.2117647 0.2039216 0.1725490 0.1372549
[6,] 0.1333333 0.2313725 0.2901961 0.2705882 0.2392157 0.2039216 0.1411765
          [,15]      [,16]     [,17]     [,18]     [,19]     [,20]      [,21]
[1,] 1.00000000 1.00000000 1.0000000 1.0000000 1.0000000 1.0000000 1.00000000
[2,] 1.00000000 1.00000000 1.0000000 1.0000000 1.0000000 1.0000000 1.00000000
[3,] 0.93725490 0.93725490 0.9372549 0.9372549 0.9372549 0.9372549 0.94117647
[4,] 0.14117647 0.13333333 0.1176471 0.1294118 0.1294118 0.1450980 0.16078431
[5,] 0.10980392 0.09803922 0.1137255 0.1215686 0.1058824 0.1137255 0.09803922
[6,] 0.09411765 0.09803922 0.1058824 0.1137255 0.1215686 0.1254902 0.12549020
         [,22]     [,23]     [,24]     [,25]     [,26]     [,27]     [,28]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[3,] 0.9372549 0.9529412 0.9725490 0.9764706 0.9764706 0.9725490 0.9764706
[4,] 0.1450980 0.3294118 0.6078431 0.6627451 0.6470588 0.6078431 0.6705882
[5,] 0.1176471 0.3725490 0.6313725 0.6313725 0.5764706 0.5490196 0.6392157
[6,] 0.1333333 0.4313725 0.6352941 0.5686275 0.5137255 0.5686275 0.6509804
         [,29]     [,30]     [,31]     [,32]     [,33]     [,34]     [,35]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[3,] 0.9803922 0.9803922 0.9764706 0.9725490 0.9764706 0.9764706 0.9764706
[4,] 0.7176471 0.6941176 0.6784314 0.6274510 0.6823529 0.6784314 0.6352941
[5,] 0.7137255 0.7019608 0.6705882 0.6117647 0.6862745 0.6901961 0.6039216
[6,] 0.7137255 0.7019608 0.6901961 0.6901961 0.6980392 0.6941176 0.6627451
         [,36]     [,37]     [,38]     [,39]     [,40]     [,41]     [,42]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[3,] 0.9764706 0.9803922 0.9803922 0.9803922 0.9803922 0.9803922 0.9764706
[4,] 0.6823529 0.6901961 0.6901961 0.6862745 0.7019608 0.7019608 0.6823529
[5,] 0.6509804 0.6862745 0.6901961 0.6862745 0.6862745 0.6862745 0.6666667
[6,] 0.6862745 0.6901961 0.6901961 0.6941176 0.6901961 0.6901961 0.6862745
         [,43]     [,44]     [,45]     [,46]     [,47]     [,48]     [,49]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[3,] 0.9803922 0.9803922 0.9725490 0.9764706 0.9803922 0.9803922 0.9647059
[4,] 0.6941176 0.7058824 0.6117647 0.6352941 0.7137255 0.6862745 0.5294118
[5,] 0.6862745 0.7176471 0.5137255 0.5764706 0.6862745 0.6823529 0.5843137
[6,] 0.6901961 0.7058824 0.5882353 0.6509804 0.6862745 0.6784314 0.5921569
         [,50]     [,51]     [,52]     [,53]     [,54]     [,55]     [,56]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[3,] 0.9803922 0.9803922 0.9725490 0.9764706 0.9725490 0.9803922 0.9843137
[4,] 0.6941176 0.6862745 0.6156863 0.6470588 0.6000000 0.6901961 0.7647059
[5,] 0.6862745 0.6862745 0.6431373 0.6627451 0.5647059 0.6549020 0.7921569
[6,] 0.6941176 0.6627451 0.6156863 0.6666667 0.6039216 0.6941176 0.8196078
         [,57]     [,58]     [,59]     [,60]     [,61]     [,62]     [,63]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[3,] 0.9921569 0.9921569 0.9882353 0.9921569 0.9921569 0.9921569 0.9921569
[4,] 0.8509804 0.8627451 0.8392157 0.8705882 0.8627451 0.8588235 0.8705882
[5,] 0.8705882 0.8666667 0.8352941 0.8705882 0.8627451 0.8588235 0.8705882
[6,] 0.8745098 0.8666667 0.8666667 0.8705882 0.8627451 0.8627451 0.8745098
         [,64]     [,65]     [,66]     [,67]     [,68]     [,69]     [,70]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[3,] 0.9921569 0.9921569 0.9921569 0.9843137 0.9568627 0.9490196 0.9450980
[4,] 0.8705882 0.8784314 0.8705882 0.7647059 0.3960784 0.2588235 0.2392157
[5,] 0.8705882 0.8549020 0.8666667 0.6980392 0.2509804 0.1921569 0.2117647
[6,] 0.8627451 0.8470588 0.8588235 0.5490196 0.1294118 0.1490196 0.2470588
         [,71]     [,72]     [,73]     [,74]     [,75] [,76] [,77]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000     1     1
[2,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000     1     1
[3,] 0.9411765 0.9411765 0.9450980 0.9607843 0.9568627     1     1
[4,] 0.1686275 0.1725490 0.2588235 0.4588235 0.4274510     1     1
[5,] 0.1568627 0.2431373 0.2980392 0.4352941 0.5058824     1     1
[6,] 0.2000000 0.3137255 0.4549020 0.4039216 0.6980392     1     1

Exercise

Prove that inverse of an elementary matrix is also elementary.

Recall the R library magick. Create the following:

  1. a \(180^{\circ}\) rotated image of Tora
  2. a mirror image for Tora
  3. a \(45^{\circ}\) rotated image of Tora
  4. a \(90^{\circ}\) rotated image of Tora
  5. a sheared image of Tora
library(magick)
Linking to ImageMagick 6.9.12.3
Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
Disabled features: fontconfig, x11
inp_img <- image_read("http://polytopes.net/Tora_color.png")
image_info(inp_img)
  format width height colorspace matte filesize density
1    PNG    77    133       sRGB  TRUE    22377   28x28
plot(inp_img)

mod_img <- image_rotate(inp_img, degrees=180)
plot(mod_img)

mod_img <- image_flip(inp_img)
plot(mod_img)

mod_img <- image_flop(inp_img)
plot(mod_img)

Look into the R library png. Now, re-create the above images. [Difficult?]