[size=large]之前經常使用光影魔術手3的補光操作,那麼,其補光的原理是什麼呢?
老規矩,先上[color=red]結論[/color]:
[color=blue] 光影魔術手的補光相當於調整曲線操作,曲線對映關係如下:[/color][/size]
[img]
[size=large][color=blue]連續補光兩次[/color],曲線如下:[/size]
[img]
[size=large]有時,我會[color=blue]先補光兩次,再調整一下gamma值[/color],其曲線如下:[/size]
[img]
[color=blue][size=large]附上補光的對映表的matlab函式封裝:[/size][/color]
function y=buguangtable(x)
% 光影魔術手的補光對映表
% input:
% x: 整數,x \in [0, 255]
% output:
% y:整數,y \in [0, 255]
y_uint8=[0,2,3,5,6,8,10,11,13,14,16,18,19,21,22,23,25,27,28,30,31,32,33,35,36,38,39,41,42,44,45,46,47,49,51,52,53,55,56,57,59,60,62,63,64,65,67,68,70,71,71,73,75,76,77,78,79,81,82,83,84,86,87,88,89,91,92,93,94,95,97,98,99,100,101,102,104,105,106,107,109,109,110,112,113,114,115,116,117,118,120,120,122,123,124,125,126,127,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,142,144,145,145,146,147,148,149,150,151,152,153,154,155,156,156,157,158,159,160,161,162,163,164,164,166,166,167,168,169,170,171,171,173,173,174,175,176,176,178,178,179,180,181,181,182,182,183,183,184,185,185,186,186,187,188,188,189,190,190,191,192,192,193,193,194,195,195,196,197,197,198,199,199,200,201,201,202,203,203,204,205,205,206,207,207,208,209,210,210,211,212,213,213,214,215,215,216,217,218,218,219,220,221,222,222,223,224,225,226,227,227,228,229,230,231,231,232,233,234,235,236,237,238,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,255];
y=y_uint8(x+1);
end
[color=blue][size=large]% 測試光影魔術手補光的響應曲線[/size][/color]
%%生成測試影象
imr1=0:255;
imr2=[1:255 0];
imr3=255:-1:0;
im=[imr1; imr1; imr2;imr2; imr3;imr3];
im=uint8(im);
imwrite(im,'gray.bmp'); %為了保證畫素值不因為jpg的壓縮而改變,這裡使用bmp格式
%% 驗證光影魔術手的補光操作只是乙個灰度對映操作;
%需要先用 光影魔術手對'gray.bmp'補光後存為'graydisposed.bmp'
imdisposed=imread('graydisposed.bmp');
imdg=imdisposed(:,:,1);
all(imdg(1,:)==imdg(2,:))
all(imdg(3,:)==imdg(4,:))
all(imdg(5,:)==imdg(6,:))
all(imdg(2,:)==[imdg(3,end) imdg(3,1:end-1)])
r2equal_r5=all(imdg(2,:)==imdg(5,end:-1:1) )
%% 繪製光影魔術手補光的響應曲線
modename='光影魔術手補光';
x=linspace(0,1,256);
y_uint8=imdg(1,:);
y=double(y_uint8)/255;
figure1 = figure;
axes1 = axes('parent',figure1,'ytick',0:.1:1,'xtick',0:.1:1,...
'plotboxaspectratio',[1 1 1],...
'dataaspectratio',[1 1 1]);
% xlim(axes1,[0 1]);
% ylim(axes1,[0 1]);
grid on
box(axes1,'on');
hold(axes1,'all');
plot(x,y,'parent',axes1,'linewidth',3,'color',[1 0 0], 'displayname',modename);
plot(x,x,'parent',axes1,'linewidth',2,'linestyle','--', 'displayname','正常模式');
xlabel('補光前的灰度值','fontsize',16);
ylabel('補光後的灰度值','fontsize',16);
title([modename ' 響應曲線'],'fontsize',16);
legend1 = legend(axes1,'show');
set(legend1,'location','southeast');
% clear all
%%modename='光影魔術手補光2次';
x=linspace(0,1,256);
y=buguangtable(buguangtable(0:255))/255;
figure1 = figure;
axes1 = axes('parent',figure1,'ytick',0:.1:1,'xtick',0:.1:1,...
'plotboxaspectratio',[1 1 1],...
'dataaspectratio',[1 1 1]);
% xlim(axes1,[0 1]);
% ylim(axes1,[0 1]);
grid on
box(axes1,'on');
hold(axes1,'all');
plot(x,y,'parent',axes1,'linewidth',3,'color',[1 0 0], 'displayname',modename);
plot(x,x,'parent',axes1,'linewidth',2,'linestyle','--', 'displayname','正常模式');
xlabel('補光前的灰度值','fontsize',16);
ylabel('補光後的灰度值','fontsize',16);
title([modename ' 響應曲線'],'fontsize',16);
legend1 = legend(axes1,'show');
set(legend1,'location','southeast');
%%modename='補光2次, 引數為1.2的gamma校正一次';
x=linspace(0,1,256);
y=buguangtable(buguangtable(0:255))/255;
% y=buguangtable(0:255)/255;
y=y.^1.2;
figure1 = figure;
axes1 = axes('parent',figure1,'ytick',0:.1:1,'xtick',0:.1:1,...
'plotboxaspectratio',[1 1 1],...
'dataaspectratio',[1 1 1]);
% xlim(axes1,[0 1]);
% ylim(axes1,[0 1]);
grid on
box(axes1,'on');
hold(axes1,'all');
plot(x,y,'parent',axes1,'linewidth',3,'color',[1 0 0], 'displayname',modename);
plot(x,x,'parent',axes1,'linewidth',2,'linestyle','--', 'displayname','正常模式');
xlabel('補光前的灰度值','fontsize',16);
ylabel('補光後的灰度值','fontsize',16);
title([ modename ' 響應曲線'],'fontsize',16);
legend1 = legend(axes1,'show');
set(legend1,'location','southeast');
漫水填充及Photoshop中魔術棒選擇工具的實現
今天寫程式中有乙個地方用到了漫水填充 floodfill 所謂漫水填充,簡單來說,如下圖中左圖,白布上有一塊紅色的斑點,在這個紅色的斑點上點一下,就自動選中了和該點相連的紅色的區域,接著將該區域替換成指定的顏色,如下圖中右圖所示。gdi中有乙個函式 extfloodfill 可以用於漫水填充。函式原...
漫水填充及Photoshop中魔術棒選擇工具的實現
今天寫程式中有乙個地方用到了漫水填充 floodfill 所謂漫水填充,簡單來說,如下圖中左圖,白布上有一塊紅色的斑點,在這個紅色的斑點上點一下,就自動選中了和該點相連的紅色的區域,接著將該區域替換成指定的顏色,如下圖中右圖所示。gdi中有乙個函式 extfloodfill 可以用於漫水填充。函式原...
目標驅動的產品設計(二) 從光影魔術手談起
一 在這樣的乙個領域裡,還有新產品的生存空間麼?像光影魔術手這樣的新一代影象處理軟體正在嘗試尋找答案 不糾纏於ps所擅長的專業的 強大的 自由度極高的影象處理功能,專注於給使用者提供現成的 傻瓜化的影象處理解決方案,比如影樓風格 比如反轉片效果 比如大頭貼 比如去紅眼等等。努力讓使用者在不了解任何影...