看板 MATLAB 關於我們 聯絡資訊
大家好,小弟是新手, 目前在做兩張等尺寸(160*128)圖片疊合, 並因希兩張圖片之RGB值可以改變,作多種不同比例的疊合, 一張為黑白影像,一張為單純綠色(R=B=0) 疊合方式希望選取圖片每點(pixel)的RGB值較高部分, RGB較低部分則捨去,由此 生成新的圖形,但生成的新圖形,一直與原圖一樣 麻煩各位幫忙解惑了,謝謝 程式碼如下 讀取1&2張圖片 A=imread('s1.bmp'); S1=size(A) AR=A(:,:,1); AG=A(:,:,2); AB=A(:,:,3); AR1=reshape(AR,1,20480); AG1=reshape(AG,1,20480); AB1=reshape(AB,1,20480); X=imread('20.bmp'); S2=size(X) XR=X(:,:,1); XG=X(:,:,2); XB=X(:,:,3); XR1=reshape(AR,1,20480); XG1=reshape(AG,1,20480); XB1=reshape(AB,1,20480); 決定圖1&圖2RGB Glevel=[35 35 35 38]; % [R G B G2] H=128; L=160; imshow(reshape(AR1,H,L)) figure; imshow(reshape(AG1,H,L)) figure; imshow(reshape(AB1,H,L)) PR=reshape(AR1,H,L); PG=reshape(AG1,H,L); PB=reshape(AB1,H,L); for j=1:size(Glevel,1) [row2 clm2]=find((((PR==0)+(PG==0)+(PB==0)))<3); % 改字的輝度 for i=1:length(row2); PR(row2(i),clm2(i))=Glevel(j,1); PG(row2(i),clm2(i))=Glevel(j,2); PB(row2(i),clm2(i))=Glevel(j,3); end imshow(PG) [row clm]=find((((PR==0)+(PG==0)+(PB==0)))==3); % 改底的輝度 for i=1:length(row); PG(row(i),clm(i))=Glevel(j,4); end % imshow(PG) % figure; % imshow(PR) % figure; % imshow(PB) end -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.41.178 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1418315518.A.348.html
sunev: j=1:size(Glevel,1) ? 12/12 01:21
ntme: 黑白或純綠圖片用一個二維矩陣應該就可以了??然後就只是比 12/12 17:00
ntme: 較相同位置誰的值比較大就選誰 12/12 17:00
ntme: 不太懂為什麼要存成RBG三個矩陣作?還有字跟底的輝度是什麼 12/12 17:01
ntme: 意思阿?? 12/12 17:01
winnie4952: 看程式只對S1做處裡 S2只取出來就沒動了 12/12 18:08
winnie4952: 假如S1是他所謂的RGB 但只有G有顏色 12/12 18:09
winnie4952: 他的字輝度就是G有值的地方R,G,B=35 12/12 18:10
winnie4952: 底輝度就是G沒顏色 就變成38 12/12 18:11
winnie4952: 原PO假如是只要用黑白影像對G比較,留大的值 12/12 18:13
winnie4952: 直接C1=a>=b; C2=b>a; CC=a.*C1+b.*C2; 就可以了 12/12 18:14
chengyi823: 感謝各位解惑 12/12 20:43