UOMOP
JPEG의 header, tail 본문
import numpy as np
import torch
import torchvision
import torchvision.transforms as transforms
from PIL import Image
import io
from matplotlib import pyplot as plt
import numpy as np
transform = transforms.Compose([transforms.ToTensor()])
trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=50000, shuffle=False, num_workers=2)
args = {
'BATCH_SIZE' : 2,
'JPEG_QUAL' : 85,
'LEARNING_RATE' : 0.001,
'NUM_EPOCH' : 500,
'SNRdB_list' : [0, 15, 30],
'latent_dim' : 512,
'input_dim' : 32*32
}
def JPEG_one_img(image, quality=args['JPEG_QUAL']):
buffer = io.BytesIO()
image.save(buffer, format='JPEG', quality=quality)
return buffer.getvalue()
def JPEG_encoder(image):
# input : 하나의 batch를 입력으로 넣어줌.
# output : len(output)은 batchsize가나옴.
batch = [image]
compressed_batch = []
#print("input img : {}".format(batch[0].shape))
for image in batch:
pil_image = transforms.ToPILImage()(image)
compressed_data = JPEG_one_img(pil_image, quality=args['JPEG_QUAL'])
binary_data = ''.join(format(byte, '08b') for byte in compressed_data)
binary_list = list(binary_data)
compressed_batch.append(binary_list)
output = []
for i in range(len(compressed_batch)):
saver = []
for j in range(len(compressed_batch[i])):
saver.append(int(compressed_batch[i][j]))
output.append(np.array(saver))
return output
images, labels = next(iter(trainloader))
saver = []
for k in range(39999) :
img1 = images[k]
img2 = images[k+1]
compre_img1 = JPEG_encoder(img1)
compre_img2 = JPEG_encoder(img2)
img1_bitstream = np.flip(compre_img1[0])
img2_bitstream = np.flip(compre_img2[0])
for i in range(len(img1_bitstream)):
if img1_bitstream[i] != img2_bitstream[i] :
saver.append(i)
break
print(min(saver))
꼬리쪽 16개부터 값이 달라짐. JPEG Quality를 85로 맞췄을때만.
header는 4984부터 값이 달라짐.
JPEG Quality를 높일때도 확인해봐야함.
'Research > Semantic Communication' 카테고리의 다른 글
Colorization cifar10(gray to color) (0) | 2023.12.19 |
---|---|
temp_20231205 (0) | 2023.12.05 |
JPEG temp (0) | 2023.12.05 |
JPEG+LDPC+16QAM python (0) | 2023.12.05 |
temp : JPEG+LDPG+16QAM (0) | 2023.12.04 |
Comments