2017-06-20 179 views
0

我需要產生相當很多低分辨率(64x64)從一個高分辨率圖像(全部具有相同的尺寸)(256x256)圖像,其中每個很多低分辨率圖像的其中每個像素爲不同於產生從高分辨率圖像

我搜索了python庫,並沒有找到我需要的。你有什麼想法實現這一目標?

+0

是什麼* 「像素不同的」 *是什麼意思?他們是JPEG還是PNG圖像? –

+0

什麼是*「高分辨率」*?什麼是*「低分辨率」*? –

+0

你在使用什麼操作系統?你試過什麼了? –

回答

1

我只會在bashImageMagick的命令行中執行此操作,它安裝在大多數Linux發行版上,可用於macOS和Windows。

產生一些變化,最簡單的方法是通過改變JPEG質量:

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

因此,這將產生41,低分辨率(64×64)的圖像稱爲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 
+0

謝謝Mark,我對bash編程不熟悉,有沒有python或matlab版本來實現這個功能?順便說一下,圖像q60.jpg,q61.jpg ...之間有什麼不同? – Schaffer

+0

每一個都是用不同的質量設置創建的,所以質量較低的是64x64圖像的較小和較不準確的表示,而接近「質量= 100」的圖像更準確,忠實地表示圖像,但需要更大的文件大小(一般)。嘗試拍攝你的一張照片,並將其保存爲質量10 ...'轉換someImage-quality 10 low-quality.jpg',你會發現它是一個可憐的肖像。 –

+0

如果你用''''標記標記你的問題,我想有些靈魂可能會在Matlab中爲你做類似的事情。你可以在Python中完成上述操作,ImageMagick有Python綁定 - 只是我不會說Python。嘗試添加一個Python標籤。 –

1

馬克·瑟特查的回答的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 

參考:

+0

不錯的一個,謝謝。 –

+0

非常有用!謝謝!@ m7913d – Schaffer

+0

@Mark Setchell,謝謝! – Schaffer