MATLAB進行二值處理並提取畫素值
阿新 • • 發佈:2018-11-04
今天又重新看了一下2013年國賽的B題,碎紙片的拼接復原。瞭解了一下MATLAB處理影象的過程,不得不說MATLAB功能太強大,處理圖片只要幾行程式碼就足夠了。這道題還用到了模擬退火演算法,也是用MATLAB編寫的,寫在下一篇部落格裡。
MATLAB程式:
clc; clear; filename = '000.bmp'; imfinfo(filename) % 檢視影象檔案資訊 imgRgb = imread(filename); % 讀入一幅彩色影象 imshow(imgRgb); % 顯示彩色影象 imgGray = rgb2gray(imgRgb); % 轉為灰度影象 figure % 開啟一個新的視窗顯示灰度影象 imshow(imgGray); % 顯示轉化後的灰度影象 % imwrite(imgGray, 'gray.jpg'); % 將灰度影象儲存到影象檔案 thresh = graythresh(imgGray); %自動確定二值化閾值 I = im2bw(imgGray,thresh); %對影象二值化 figure imshow(I); valel=I(:,1);% 提取碎紙片第一列畫素 valer=I(:,72);% 提取碎紙片最後一列畫素
需要注意的是進行二值化處理之前需要對影象進行灰度處理,使用灰度影象進行二值化處理時,所取得的二值化閾值會更加精確,graythresh使用的方法是最大類間方差法。