[運算] 直方圖等化彩圖運算

看板MATLAB作者 (Mr.洋芋)時間10年前 (2014/12/06 16:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
下面這是一段直方圖等化對彩色圖像的運算 僅會秀出原圖像及修改後圖像 請問我要加上什麼程式碼 才能讓程式多秀出等化後的直方圖 感謝 sourcePic=imread('1.jpg'); [m,n,o]=size(sourcePic); figure,imshow(sourcePic,[]); %grayPic=rgb2gray(sourcePic); grayPic=sourcePic(:,:,1); gp=zeros(1,256); %計算各灰階出現的機率 for i=1:256 gp(i)=length(find(grayPic==(i-1)))/(m*n); end newGp=zeros(1,256); %計算新的各灰階出現的機率 S1=zeros(1,256); S2=zeros(1,256); tmp=0; for i=1:256 tmp=tmp+gp(i); S1(i)=tmp; S2(i)=round(S1(i)*256); end for i=1:256 newGp(i)=sum(gp(find(S2==i))); end newGrayPic=grayPic; %填充各像素點新的灰階值 for i=1:256 newGrayPic(find(grayPic==(i-1)))=S2(i); end nr=newGrayPic; grayPic=sourcePic(:,:,2); gp=zeros(1,256); %計算各灰階出現的機率 for i=1:256 gp(i)=length(find(grayPic==(i-1)))/(m*n); end newGp=zeros(1,256); %計算新的各灰階出現的機率 S1=zeros(1,256); S2=zeros(1,256); tmp=0; for i=1:256 tmp=tmp+gp(i); S1(i)=tmp; S2(i)=round(S1(i)*256); end for i=1:256 newGp(i)=sum(gp(find(S2==i))); end newGrayPic=grayPic; %填充各像素點新的灰階值 for i=1:256 newGrayPic(find(grayPic==(i-1)))=S2(i); end ng=newGrayPic; grayPic=sourcePic(:,:,3); gp=zeros(1,256); %計算各灰階出現的機率 for i=1:256 gp(i)=length(find(grayPic==(i-1)))/(m*n); end newGp=zeros(1,256); %計算新的各灰階出現的機率 S1=zeros(1,256); S2=zeros(1,256); tmp=0; for i=1:256 tmp=tmp+gp(i); S1(i)=tmp; S2(i)=round(S1(i)*256); end for i=1:256 newGp(i)=sum(gp(find(S2==i))); end newGrayPic=grayPic; %填充各像素點新的灰階值 for i=1:256 newGrayPic(find(grayPic==(i-1)))=S2(i); end nb=newGrayPic; res=cat(3,nr,ng,nb); figure,imshow(res,[]); -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.128.224 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1417853821.A.F81.html
文章代碼(AID): #1KWhjz-1 (MATLAB)
文章代碼(AID): #1KWhjz-1 (MATLAB)