2016年9月22日 星期四

Octave 與 Excel 合力畫圖 histogram



利用直方圖(histogram)來顯示影像的亮度統計是一個常用的工具。在Octave 或Matlab,只要一行指令就可以畫出影像的直方圖。



↓利用imhist畫出影像im的直方圖

利用imhist畫出的直方圖就像上圖一樣,很多人不喜歡圖型下半部的灰階色塊,也不喜歡X座標的說明文字只有0到250  (灰度值應該是0-255)。每個人對圖型的要求都不同,無論是顏色、大小、座標軸、格線....都有不同的看法,可是在Octave上修改圖型的設定是困難的,為了解決這個問題,我們可以將imhist產生的數據「丟」到EXCEL去畫圖,然後再慢慢修自己想要的樣子。

只要在Octave產的變數,其數值可以寫到檔案中,作為其他軟體的使用,當然自己也可以再讀取。

↓利用imhist將影像im的直方圖存到變數counts中,再把counts存到檔案histogram.txt中

指令save將《  變數》儲存到《檔案》,即  >> save  檔名  變數

↓使用記事本開啟檔案histogram.txt

由於imhist輸出的counts是一個一維陣列,依序存放灰度值由0至255出現的次數。從記事本開啟這個一維陣列,檔案前五行為說明文字(每行開頭有#),說明產生的日期及格式。

接下來,啟動excel來讀取直方圖的數據資料。


↓在EXCEL中,按《資料》→《從文字檔》→選擇剛才的hitogram.txt


↓EXCEL讀入該文字檔後,由於資料只有一行數字,無需設定格式,直接按《完成》


↓資料起始位置放在預設的A1,按《確定》


↓把說明文字的五行資料刪除

↓在資料最左邊及最上邊各增加一欄及一列,欄位名稱填上《灰度值》及《數量》,灰度值利用EXCEL的【填滿】功能,由0,1,2..至255。


利用滙入的資料來畫圖,再修訂成自己想要的格式,由EXCEL來操作就容易多了。剩下就是EXCEL插入《直條圖》、《散佈圖》.....



↑喜歡哪一種,自己決定.....


--  END --


沒有留言:

張貼留言