資源簡介
以距離拼接縫的距離為變量,獲得拼接縫兩側每一列像素的補償值,從而達到使每一列像素差減小,從肉眼看來則是消除了拼接縫.matlab實現非常快速方便
代碼片段和文件信息
clc;clear;close?all;
img_rgb?=?imread(C:\Users\Ray\Desktop\Brightness?adjustment\outter_res\1.bmp‘);
%?figure?imshow(img_rgb);
%?R?=?rgb2gray(img_rgb);
R?=?img_rgb(::1);
G?=?img_rgb(::2);
B?=?img_rgb(::3);
figure?imshow(img_rgb);
[abc]?=?size(img_rgb);??%得到矩陣尺寸
mid1?=?148;?
mid2?=?149;???%縫位置
L?=?80;????%縫區域寬度
k?=?0.8;????%系數
w?=?k?*?L;??%改正寬度
%R
R0?=?R(:mid1?-?w+1?:?mid2+w-1);
D1?=?zeros(a2*w);
D2?=?zeros(a2*w);
D?=?zeros(a2*w);
d?=?zeros(a?2*w);
dR?=?zeros(a?2*w);
R1?=?zeros(a?2*w);
for?m?=?1:a?
%?????????D1(m:)?=?mean(?R(m?(mid1-L+1)?:?mid1?));
%?????????D2(m:)?=?mean(?R(m?mid2?:?(mid2+L-1)?));
????????D1(m:)?=??R(m?mid1);??%縫左像素點處灰度值
????????D2(m:)?=?R(m?mid2);?%縫右像素點處灰度值
????????for?n?=?1:2*w
????????????D(mn)?=?(D1(mn)?-?D2(mn))/2;
????????????d(mn)?=?round(?abs(n-(2*w+1)/2));??%像點到縫距離
????????????dR(mn)?=?(1?-?d(mn)/w?).*?D(mn);??%改變量
????????????if?n?<=?w
????????????R1(mn)?=?R(mn?+?mid1?-?w)?-?dR(mn);
????????????else
????????????????R1(mn)?=?R(mn?+?mid1?-?w)?+?dR(mn);
????????????end
????????end
end
R?(:mid1?-?w+1?:?mid2+w-1)?=?R1;
%G
G0?=?G(:mid1?-?w+1?:?mid2+w-1);
D1?=?zeros(a2*w);
D2?=?zeros(a2*w);
D?=?zeros(a2*w);
d?=?zeros(a?2*w);
dG?=?zeros(a?2*w);
G1?=?zeros(a?2*w);
for?m?=?1:a?
%?????????D1(m:)?=?mean(?R(m?(mid1-L+1)?:?mid1?));
%?????????
- 上一篇:8x8點DCT變換matlab代碼
- 下一篇:MATLAB7.x數字信號處理
評論
共有 條評論