作者chengyi823 (孔雀)
看板MATLAB
标题[问题] 两张等尺寸图片叠合
时间Fri Dec 12 00:31:56 2014
大家好,小弟是新手,
目前在做两张等尺寸(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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1418315518.A.348.html
1F:推 sunev: j=1:size(Glevel,1) ? 12/12 01:21
2F:推 ntme: 黑白或纯绿图片用一个二维矩阵应该就可以了??然後就只是比 12/12 17:00
3F:→ ntme: 较相同位置谁的值比较大就选谁 12/12 17:00
4F:→ ntme: 不太懂为什麽要存成RBG三个矩阵作?还有字跟底的辉度是什麽 12/12 17:01
5F:→ ntme: 意思阿?? 12/12 17:01
6F:推 winnie4952: 看程式只对S1做处里 S2只取出来就没动了 12/12 18:08
7F:→ winnie4952: 假如S1是他所谓的RGB 但只有G有颜色 12/12 18:09
8F:→ winnie4952: 他的字辉度就是G有值的地方R,G,B=35 12/12 18:10
9F:→ winnie4952: 底辉度就是G没颜色 就变成38 12/12 18:11
10F:→ winnie4952: 原PO假如是只要用黑白影像对G比较,留大的值 12/12 18:13
11F:→ winnie4952: 直接C1=a>=b; C2=b>a; CC=a.*C1+b.*C2; 就可以了 12/12 18:14
12F:→ chengyi823: 感谢各位解惑 12/12 20:43