彩色圖像與二值圖像(mask)點乘


問題描述:給出一幅彩色圖像和一張mask二值圖像,其中mask和彩色圖像大小相同,感興趣的部分為1,其余部分為0,請用mask與彩色圖像點乘,將感興趣區域顯示出來。

點乘的本質是mask中是二值圖像,感興趣部分像素值為1,將彩色圖像與mask對應像素相乘,感興趣區域的的像素保持不變,其余的像素點為0,從而顯示感興趣區域。

首先彩色圖像是不能與二值圖像直接進行點乘的,因為矩陣的維度都不一樣。

這里有兩種方法可以實現如上功能:將彩色圖像按通道進行點乘,再合並起來,或者將二值圖像復制擴充為三通道圖像,再與彩色圖像直接進行點乘。

復制擴充的意思是,圖像有三個通道,應該讓mask的三個通道都有感興趣區域,不能也不能簡單的將其他通道置為0,否則只會顯示一個通道的彩色圖像,B或G或R

Matlab

假設mask矩陣的大小為a(200,300),展示的是200*300的二值圖像,原圖大小為m(200,300,3),表示200*300的三通道彩色圖像。

%假設輸出圖像為c
%按通道進行點乘 c(:,:,1)=m(:,:,1).*a; c(:,:,2)=m(:,:,2).*a; c(:,:,3)=m(:,:,3).*a;
%先將二值圖像進行復制擴充
%假設三通道mask為p
p(:,;,1)=a;
p(:,;,2)=a;
p(:,;,3)=a;
c=m.*p;

C++

OpenCV中的位與函數為bitwise_and,表示對應的像素點相與,另外mask的復制擴充及分通道,合並通道可以看:Scalar、圖像通道、分離、合成通道


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM