Commit fad8d727ae9e3a6f9c7bc90becac64435998d2e4
1 parent
5a7c47ec
Exists in
master
so you want to set...?
Showing
3 changed files
with
42 additions
and
28 deletions
Show diff stats
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 | ... | ... |