MATLAB插畫變線稿?從灰度圖,二值圖,反白圖,到邊緣檢測

MATLAB數字圖像處理是一件有趣的事情,對一張圖像使用基於MATLAB的數字圖像處理技術,甚至可以將一張二次元se圖變爲線稿(一定程度上,效果當然不好,可以再使用PS或美圖秀秀稍加處理嘛),話不多說,效果如此:
怎麼樣,作爲手殘,雖然不會手繪,但是我會仍然可以做出一定程度的線稿
在這裏插入圖片描述
以上內容是本次所講的MATLAB可以實現的關於數字圖像處理的功能。

首先我們需要讀取一張圖片的文件。這在上一篇博客講過:讀取,剪裁一張圖像。在此就略過

比如我們打開一個圖像文件hpym.jpg,他的像素矩陣是三維的,包括二維的像素值和一個RGB維度

A0 = imread('hpym.jpg');

灰度化

然後把它轉換成灰度圖像,可以使用以下語句

A1 = rgb2gray(A0);

這樣生成的圖像就是原圖片A0的灰度圖像了,可以調用imshow(A1)展示觀看你的圖像了

二值化
轉換成灰度圖像之後,我們可以經一部把它變成二值圖像,也就是黑白圖像,沒有灰度的漸變。簡單的理解它的像素矩陣是二維的邏輯值,1和0,就是圖像的像素非黑即白。
可以調用以下函數吧灰度圖像轉換成二值圖像

level = graythresh(A1)
A2 = im2bw(A1, level)

這樣生成的圖像A2就是一個二值圖像了,可以調用imshow(A2)展示觀看你的圖像了。至於爲什麼這麼操作,以後細講

邊緣檢測
接下來進行圖像的邊緣分割,來得到它的輪廓圖。他需要一系列算法,他也有很多種算子可以作爲分割的方法去分割。我們這裏展示一下sobel算子的效果
首先讀取一個二值圖像A2,略
然後檢測邊緣,得到邊緣圖像

A3 = edge(A2, 'sobel')

這裏第二個參數是邊緣檢測的算子,你還可以試一試roberts, canny,等等

反白化
這樣的圖像是白色的輪廓,黑色的背景。如果需要把白色和黑色互換一下,也就是反白操作,變成白底黑線。可以對A3進行如下操作

A4 = 255 - A3

這樣得到的A4就是反白圖像。這樣就像一幅畫一樣了。無奈的是,邊緣通常是不連續的,如果想更好看一些,就要進行後期的人工PS處理了

事實上每兩幅不同的插畫,處理起來難度也是不一樣的,這個時候你可以做一些其他的操作,諸如頂帽變換,低帽變換,甚至濾波去噪等等操作,我這裏只使用了我們能夠完成本功能的基本操作罷

————CUST ZhaoKe

發佈了10 篇原創文章 · 獲贊 5 · 訪問量 600
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章