轉(zhuǎn)自 http://blog.csdn.net/yirant7/article/details/51273805
利用GUI編程時陌僵,有時候岩饼,你需要建立一個axes,在axes上顯示你的圖像抑堡,常用的函數(shù)有:imshow和image契吉。但是這兩個是有著明顯的區(qū)別的,image是用來顯示附標圖像柠新,即顯示的圖像上有x,y坐標軸的顯示拉庵,可以看到圖像的像素大小,而imshow只是顯示圖像浸间。它們都可以用subplot來定位圖像顯示的位置太雨,用colormap來定義圖像顯示用的顏色查找表,比如用colormap(pink)魁蒜,可以把黑白圖像顯示成帶粉紅色的圖像囊扳,很有趣的。具體的區(qū)別如下所示:
1.imshow的兩種用法:
1) imshow(路徑與文件名字符串)
2) imshow(圖像矩陣)
若當前figure存在坐標軸兜看,imshow會將產(chǎn)生的image對象(即圖像對象)顯示在當前坐標軸內(nèi)锥咸;
若當前figure不存在坐標軸,imshow會產(chǎn)生一個隱藏的坐標軸细移,并將產(chǎn)生的image對象顯示于其中搏予;
2.imshow(路徑與文件名字符串)等價于:M=imread(路徑與文件名字符串);imshow(M);
3.imshow不會擴展填充圖像數(shù)據(jù),即不會拉伸圖像使其鋪滿坐標軸弧轧,而是改變坐標軸寬高比使其適應圖像數(shù)據(jù)雪侥;
4.image的用法:
M=imread(路徑與文件名字符串);image(M);
5.image不會改變坐標軸的大小尺寸,而是擴展填充圖像矩陣劣针,使其鋪滿坐標軸區(qū)域校镐。
image不會改變坐標軸的大小尺寸,而是擴展填充圖像矩陣捺典,使其鋪滿坐標軸區(qū)域鸟廓。
image是用來顯示附標圖像,即顯示的圖像上有x襟己,y坐標軸的顯示引谜,可以看到圖像的像素大小。
在這里最值得注意的是要顯示的圖像像素矩陣的數(shù)據(jù)類型擎浴。顯示真彩色圖像像素三維矩陣X员咽,如果是uint8類型,要求矩陣的數(shù)據(jù)范圍為0-255贮预,如果是double型贝室,則其數(shù)據(jù)范圍為0-1,要不就會出錯或者出現(xiàn)空白頁仿吞。類型轉(zhuǎn)換很簡單滑频,如果你原來的數(shù)值是uint8,在運算中轉(zhuǎn)換為double后,實際要顯示的數(shù)值沒有改變的話唤冈,只要用uint8(X)就可轉(zhuǎn)換為uint8型峡迷,如果不想轉(zhuǎn)換頻繁,也可在顯示時用X/255來轉(zhuǎn)換為符合0-1double類型范圍要求的數(shù)值顯示。如果顯示索引圖像(二維矩陣)绘搞,因為不同數(shù)據(jù)類型對應顏色查找表colormap的基點不同彤避,會有所區(qū)別,如果不對的話夯辖,會出現(xiàn)很多意外的顯示效果的琉预。如果索引圖像像素數(shù)值是double型,則它的取值范圍為1-length(colormap),數(shù)值起點為1,則矩陣中數(shù)值為1的對應colormap中第一行數(shù)據(jù),如果索引圖像像素數(shù)值是uint8楼雹,則取值范圍為0-255模孩,數(shù)值起點為0,則矩陣中數(shù)值為0的對應colormap中第一行數(shù)據(jù)贮缅,所以索引圖像這兩個數(shù)據(jù)類型之間的轉(zhuǎn)換,要考慮到+1或-1介却。直接用uint8或double轉(zhuǎn)換則會查找移位谴供,產(chǎn)生失真情況。uint16數(shù)據(jù)類型與uint8類似齿坷,取值范圍為0-65536桂肌。
image不會改變坐標軸的大小尺寸,而是擴展填充圖像矩陣永淌,使其鋪滿坐標軸區(qū)域崎场。
image是用來顯示附標圖像,即顯示的圖像上有x遂蛀,y坐標軸的顯示谭跨,可以看到圖像的像素大小。