2
我有一個矩陣文件,它是由拜耳過濾器更改的照片。當我使用RGGB傳感器對齊方式對其使用去馬賽克功能時,它會變成原始圖片。 我試圖通過將每個不可用像素顏色的相同顏色像素的平均值作爲它的值來實現去馬賽克功能,但是它給出的答案不是原始照片。你能告訴我我做錯了什麼嗎?在matlab中實現去馬賽克功能
clear;
clc;
I = struct2cell(load('Bayer.mat'));
J = I{1,1};
[M N] = size(J);
T = uint8(zeros(M,N,3));
for i = 2:M-1
for j = 2:N-1
if mod(i,2) ~= mod(j,2) %G
T(i,j,1)=round((J(i,j-1)+J(i,j+1))/2);
T(i,j,2)=round(J(i,j));
T(i,j,3)=round((J(i-1,j)+J(i+1,j))/2);
elseif mod(i,2) == 1 %R
T(i,j,1)=round(J(i,j));
T(i,j,2)=round((J(i-1,j)+J(i+1,j)+J(i,j-1)+J(i,j+1))/4);
T(i,j,3)=round((J(i-1,j-1)+J(i+1,j-1)+J(i+1,j-1)+J(i-1,j+1))/4);
else %B
T(i,j,1)=round((J(i-1,j-1)+J(i+1,j-1)+J(i+1,j-1)+J(i-1,j+1))/4);
T(i,j,2)=round((J(i-1,j)+J(i+1,j)+J(i,j-1)+J(i,j+1))/4);
T(i,j,3)=round(J(i,j));
end
end
end
%K = demosaic(J,'rggb');
imwrite(J,'im0.jpg');
imwrite(T,'im05.jpg');
圖片我在得到
uint8
會溢出因爲我是一個N * M * 1的拜耳矩陣,所以我不明白你從哪裏得到了'''I(:,:2)'''和''I(:,:3)'' '從 然後我必須改變它的原始'''''K = demosaic(T,'rggb');'''會做它,但我不允許使用demosaic功能,所以我的主要問題是在N * M * 1矩陣上實現去馬賽克 –@AlalehA這裏我是原始的RGB圖像(尺寸= M×N×3),進行Bayer過濾並保存到T矩陣(M×N×1)。然後使用去馬賽克函數從T矩陣構造另一個RGB圖像K(MxNx3)。 – Bhoke
糟糕,我只是認識到了這個問題。我將編輯我的帖子 – Bhoke