20+行Matlab代碼實現文件掃描
03-15
最近剛好看到一篇回答,用閾值二值化處理圖片水印,受到啟發寫此代碼。閾值二值化適合處理只有黑白兩色的圖片,考慮到文件蓋章,這裡作者使用像素顏色替換及灰度值處理圖片,進一步提高處理精度和能力。
我們需要:Matlab軟體,手機拍的文件圖片
2019.2.22修改:根據評論區建議,刪除循環,將代碼全部矩陣化
首先讀入圖片
filename=TestPic.jpg;%圖片名稱,默認與代碼在同一文件夾下
img=imread(filename);%讀入圖片
獲取圖片RGB值
R=img(:,:,1);
G=img(:,:,2);
B=img(:,:,3);
篩選圖片紅色
red=(R>=100).*(R<=255).*(G<110).*(B<110);%判斷是否為紅色並得到紅色區域布爾矩陣
%這裡的.*為矩陣元素各自相乘,直接使用*為矩陣乘法
%這裡偷了個懶,乘法在這裡的作用是矩陣相與
%修改紅色區域顏色
R(red==1)=255;
G(red==1)=70;
B(red==1)=70;
這裡,RGB數值不唯一,可以根據具體圖片重新調整,特別是識別紅色的if語句,需要反覆調參。這裡作者事先在PS里查看了原圖紅色區域RGB數值。如果你不會PS,那……總有別的辦法搞到RGB吧……實在不行咱一點點調嘛。
TAG:MATLAB |