从高分辨率图像生成大量低分辨率图像

时间:2017-06-20 07:26:58

标签: python image-processing

我需要从一张高分辨率(click)图片中生成相当很多低分辨率(64x64)图片(所有图片都相同)每个像素都与其他像素不同

我搜索了python库,但没找到我需要的那个。你有什么想法实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

我会在bash的命令行中使用 ImageMagick 执行此操作,该命令行安装在大多数Linux发行版上,可用于macOS和Windows。

生成某些变化的最简单方法是改变JPEG质量:

for ((quality=60;quality<=100;quality++)) ; do 
    convert StartImage.jpg -resize 64x64 -quality $quality q-$quality.jpg
done

因此,这将生成41个低分辨率(64x64)图像q-60.jpgq-61.jpg ...来自一个StartImage.jpg

您可以为这样的每个文件生成图像文件名和像素哈希(校验和)列表,以便显示像素内容因图像而异:

identify -format "%f %#\n" q*jpg 

示例输出

q-100.jpg 2cf03ae65ee8b7720f4c395480043542b618c907929c219509c1f93a2352ae10
q-60.jpg d54d929aac414eaf73ee1589d8f5cf5341e03793fb99a71b9eef5b57297dcd4f
q-61.jpg 285ee9ac56b8508042a64d4ac2d1cd4d21edf5ea6ab9fe94ff423b2cb9ad8cf8
q-62.jpg a0c6175a6549c935c2ff0acd3efc0e27e2534622e1169be65bb39032c96b7e42
q-63.jpg efd2d677f05d99ac47a0696691cb5e8242e40bf2fcef6b690ccb3ec644aec191
q-64.jpg 084ec882abdf9c8218b28e91278f0266a83a7ce5865a48713fc84fd077405471
q-65.jpg 6c37565bb1648c2c4f1c30b4eac03c6580ec66a1bff641d0f9cf948e068238eb
q-66.jpg 52cca810bf79a146bebd55b5474e3d485fd4f29054cc3eafce61b4ae2f42450b
q-67.jpg 17c98b4b47a3c31cff61260e84bfc7cf5c8a4cf8168d393d43b3b431fedfbaaa
q-68.jpg dc2f6fef80ab42551db8d09758c8bc4dcd5990c07bcd397d27eae71a5665d3cb
q-69.jpg 6baac69324e2f2962e568b99f24a6d3e9e41048150f21f2c4deec81c08514df4
q-70.jpg d2046a958374766e13e27e1e9222628d31b4619ead1528e2d48a9e90952408a6
q-71.jpg afc5f08d957e145a832d97a1e6c6c22c853eea1adb02eb73536f0c8a8089b266
q-72.jpg 2b12320a71f5a90c812883146749dd226daae20ba67435cea23fd043b67238bd
q-73.jpg ceda0e3f19717a5dd34e96aec24a7b4c4019ec67b52db8752f72da6e1e1d14c5
q-74.jpg 7362211710ac5aa59886c1f7638a8e0b4f69d4a519d41c52ac762256ffce1d40
q-75.jpg bc884873fb928357db6cfcfe784df16fe7541caf2b611d461f9ffdc53ac02cbe
q-76.jpg 8f9b491ad579c0ea8af83119d97b1c6b121dff51ce8bb8483198259231836a30
q-77.jpg 72a3091d5b746d0277c3384e7078b9d834a0723344922c16a82a02a6e2cb4c0d
q-78.jpg 0cbc79f79c69faa95c4923f46c910545635d2e0330894e0549b18553c97ae424
q-79.jpg fcb1fa2dc81ca5c3f561cd12fd4b3e17d2bf1721f978429fbc4eebda5b6edc94
q-80.jpg 2c8bd5bb8aa9aa4490eb00ffb785dd73e0f620b9adbdb91a4c626c34fb0bcc16
q-81.jpg 7800ccecefc462d9a9ec44e39ccfc089e23072775cc8ff3d7ee3f37df118ea41
q-82.jpg c96fc0f19c8868555598e4a377b92fb7686e39f334126d5cf93f23b721e39745
q-83.jpg 837c1fef0758594f69f4da60583aa49b1ec2ca0b3c53a6a0d5d562ed91846d92
q-84.jpg eed3d7cdde44d4bc6ba30ac167765d266af4e5342a7e88e553cf3a8d2af94cd1
q-85.jpg 35a5da0a8b696fc1019dc43b029ba3a6fbaf3ddf800d82cc8e1c26ef41f525ea
q-86.jpg 2926a2b0a6a2e919005581250d5c59261c7dd9f4746c03a5aef7fdf385db321e
q-87.jpg 3ffc4e3bae6ce41e3c88637d60e551dc1727f113125281a996f5595408363f50
q-88.jpg 5141ae616bbf2d1e477263b949ec11f6a0c2a4eb4985e098bbc961b03ab848cb
q-89.jpg 70133a7eccd264bf4e51bbe7dfe96478c646f5009485b5f77939675205a552a6
q-90.jpg 046efec5e6c0b879c44951caf074625b24c82ec83b6fe0016a08a2acd3720907
q-91.jpg 0a60d8f0e7ac8dcfc5d410a15f502ba5b719cde5798eb2b84198169c56af5d32
q-92.jpg dee0d2c654a4aef65e49001153ccbd82600664e577648f3a5de0025f37d0452e
q-93.jpg 4cd8ffadf1d4de07678ba9360b5fcbd625812e0e81a7c6c9195dde3ea66d3605
q-94.jpg 8215938adf00b3d8ef102794b10fe2c5ae70e9784014f4d64f26b6636c779073
q-95.jpg e8700f07e76c90c30b4e610c9d93ec436a6d73e43269ca205008c77eed422c7d
q-96.jpg 284e5473ab979a9026a531d0b4af44b85f9a1f9c9d7468d76bc9c5da815f57e4
q-97.jpg 064a006b20e8e133da36442f5720adb2641dfd2da767fd1dadfbce26e3c341ab
q-98.jpg 4f2eb84b7b983dfbb01fca522c45afb13107519b61755e131128fda3e31919da
q-99.jpg 72780c21a4ec4fe00cc9f5e8685c8ea1f8045a5dd2d15dcadf0ce5fe381f4372

其他微小变化的方法可能是稍微改变对比度,模糊一点,锐化一点。所以,如果你想要成千上万的变体,你可以使用这样的嵌套循环:

for blur in 1 2 3 4 5 ; do
   for contrast in a b c d ; do
      for quality in 61 62 63 .. 100 ; do
         convert StartImage.jpg -blur 0x$blur -contrast $contrast -quality $quality b${blur)-c${contrast}-q${quality}.jpg
      done
   done
done

正如@spektre所指出的,另一种方法是添加随机噪声,你也可以在ImageMagick中做,增加0-39%的噪声,如下所示:

for ((noise=0;noise<40;noise++)) ; do
   convert StartImage -resize 64x64 \( +clone +noise random \) -compose blend -define compose:args=$noise -composite noise-$noise.jpg
done

答案 1 :(得分:1)

Mark Setchell的matlab版本答案:

I = imread('your_image.jpg');
Ismall = imresize(I, [64 64]);
for i=0:10
  filename = ['output/', num2str(i), '.jpg']; % write to output folder
  imwrite(I, filename, 'Quality', i*10);
end

参考: