Commit fad8d727ae9e3a6f9c7bc90becac64435998d2e4

Authored by Chunk
1 parent 5a7c47ec
Exists in master

so you want to set...?

jpegObj/__init__.py
... ... @@ -53,7 +53,7 @@ class Jpeg(Jsteg):
53 53 Jsteg.__init__(self, file, **kw)
54 54 self.verbosity = verbosity
55 55 if verbosity > 0:
56   - print "[jpeg.__init__] Image size %ix%i" % (self.coef_arrays[0].shape)
  56 + print "[Jpeg.__init__] Image size %ix%i" % (self.coef_arrays[0].shape)
57 57 if key != None:
58 58 self.key = key
59 59 elif rndkey:
... ... @@ -187,13 +187,40 @@ class Jpeg(Jsteg):
187 187 cID = self.getCompID(channel)
188 188 return self.coef_arrays[cID]
189 189  
  190 + def setCoefMatrix(self, matrix, channel="Y"):
  191 + v, h = self.getCoefMatrix(channel).shape
  192 + assert matrix.shape == (v, h), "matrix is expected of size (%d,%d)" % (v, h)
  193 +
  194 + cID = self.getCompID(channel)
  195 + self.coef_arrays[cID] = matrix
  196 +
  197 +
190 198 def getCoefBlocks(self, channel="Y"):
191 199 """
192 200 This method returns the coefficient matrix for the given
193 201 colour channel (as a 4-D tensor: (v,h,row,col)).
194 202 """
  203 + if channel == "All":
  204 + return [
  205 + np.array([np.split(arr, arr.shape[1] / 8, axis=1) for arr in np.split(compMat, compMat.shape[0] / 8)])
  206 + for compMat in self.coef_arrays]
  207 +
195 208 compMat = self.getCoefMatrix(channel="Y")
196   - return np.array([np.split(arr,arr.shape[1]/8, axis=1) for arr in np.split(compMat,compMat.shape[0]/8)])
  209 + return np.array([np.split(arr, arr.shape[1] / 8, axis=1) for arr in np.split(compMat, compMat.shape[0] / 8)])
  210 +
  211 + def getCoefBlock(self, channel="Y", loc=(0, 0)):
  212 + """
  213 + This method returns the coefficient matrix for the given
  214 + colour channel (as a 4-D tensor: (v,h,row,col)).
  215 + """
  216 + return self.getCoefBlocks(channel)[loc]
  217 +
  218 +
  219 + def setCoefBlock(self, block, channel="Y", loc=(0, 0)):
  220 + assert block.shape == (8, 8), "block is expected of size (8,8)"
  221 + cID = self.getCompID(channel)
  222 + v, h = loc[0] * 8, loc[1] * 8
  223 + self.coef_arrays[cID][v:v + 8, h:h + 8] = block
197 224  
198 225 # Decompression
199 226 # -------------
... ...
jpegObj/__init__.pyc
No preview for this file type
yaj.py
1 1 __author__ = 'chunk'
2 2  
3   -# import mjsteg
4 3 import numpy as np
5   -
6   -# a = mjsteg.Jsteg("res/test2.jpg")
7   -# compY,compCr,compCb = a.coef_arrays
8   -#
9   -# res = np.array([np.split(arr,arr.shape[1]/8, axis=1) for arr in np.split(compY,compY.shape[0]/8)])
10   -#
11   -# print res.shape
12   -#
13   -# print res[0,0:20]
14   -
15 4 import jpegObj
16 5  
17 6 b = jpegObj.Jpeg("res/test2.jpg")
18   -c = b.getCoefBlocks(channel='Y')
19   -
20   -print c
21   -print c.shape
22   -
23   -
24   -
25   -
26   -
27   -
28   -
29   -
30   -
31   -
32   -
  7 +# c = b.getCoefBlocks(channel='Y')
  8 +# c1,c2,c3 = b.getCoefBlocks(channel='All')
  9 +# print c2
33 10  
34 11  
  12 +print b.setCoefBlock(np.array([[0] * 8 for i in range(8)]))
35 13  
  14 +c = b.getCoefBlock(channel='Y', loc=(0, 0))
  15 +print c
36 16  
  17 +c = b.getCoefBlock(channel='Y', loc=(-1, 1))
  18 +print c
37 19  
  20 +b.setCoefMatrix(np.array([[0] * 800 for i in range(600)]),channel='Y')
38 21  
  22 +c = b.getCoefBlock(channel='Y', loc=(-1, 1))
  23 +print c
39 24  
  25 +c = b.getCoefBlock(channel='Y', loc=(0, 0))
  26 +print c
40 27  
41 28  
... ...