1. 程式人生 > >MATLAB進行二值處理並提取畫素值

MATLAB進行二值處理並提取畫素值

今天又重新看了一下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使用的方法是最大類間方差法。