2017-07-07 71 views
0

我怎樣才能讓這個熱圖看起來更清晰沒有模糊的效果。我如何銳化Python(或ImageMagick)? 我怎麼可能在背景上得到一個像素網格在python或ImageMagick中對熱圖進行後處理

enter image description here

這是我用來獲取當前的圖像:

maxsize = (1030, 2056) 
for i in range(1,334,1): 
    img = Image.open('C:Desktop/Img/image'+'_'+ str(i)+'.png') 
    img = img.resize(maxsize, Image.BICUBIC) 
    img.save('C:/Desktop/Res/img'+'_'+ str(i)+'.png', dpi = (7040,7040)) 

我也試過在ImageMagick的(但沒有太大的幫助,至少在視覺上尋找):

magick img_244.png -sharpen 0x3 out.png 

非常感謝您提前,

回答

1

在ImageMagick(以及OpenCV/python)中,您可以使用kmeans來處理圖像。 ImageMagick有一個bash unix shell腳本。

kmeans -n 7 -m 5 g4Zwf.png result7.png 

其中n是顏色的數量,m是最大迭代次數。

enter image description here

這時你可以用我的劇本,網格,畫線(或直接使用ImageMagick的)畫線。用我的劇本,電網與100像素間距給出:

grid -s 100,100 -c white result7.png result7g100.png 

enter image description here

我的腳本是在http://www.fmwconcepts.com/imagemagick/index.html

對於OpenCV的/ Python的,看http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_ml/py_kmeans/py_kmeans_opencv/py_kmeans_opencv.htmlHow to write lines and grid on image in Python?

OpenCV的/ Python的也有期望最大化可能會比kmeans在顏色處理上表現得更好。見https://en.wikipedia.org/wiki/Expectation–maximization_algorithmMaximum likelihood pixel classification in python opencv

0

您導入的模塊是Image?你需要的是最近鄰居插值,而不是雙三次interpolation。可能類似於

img = img.resize(maxsize, Image.INTER_NEAREST) 
+0

我用PIL(導入圖像)。我認爲最近鄰插值太大,插值太大,像素的大小(如果我可以說)太大了。結果,我們想要看到的平滑程度沒有獲得。會有替代方案嗎?我用這個網站作爲參考:https://www.daniweb.com/programming/software-development/code/216637/resize-an-image-python – MedImage

+0

你的原始圖像沒有包含比你在最近鄰居「內插」。我擔心我不能幫助你,而不僅僅是指PIL中的不同[插值方法](http://pillow.readthedocs.io/en/3.1.x/reference/Image.html#PIL.Image.Image.resize) 。也許其中一個導致接近你想要的外觀。你可以改變顏色表,看看[這裏](https://stackoverflow.com/questions/10965417/how-to-convert-numpy-array-to-pil-image-applying-matplotlib-colormap)瞭解如何使用帶有PIL的matplotlib顏色映射。 – LUB

+0

我同意LUB。如果您有一組非常小的原始數據並正在嘗試擴展,那麼通過使用-resize,由於像素插值,您正在模糊它。我上面所做的只是試圖將它分成獨特的顏色。如果你想放大,你應該在ImageMagick中使用-scale或者嘗試-filter carton -resize,這可能會給你一個更清晰的結果,具體取決於你有多大的擴展。但是LUB是正確的。您不會從使用-scale的像素複製中獲得更多信息。 – fmw42