最近需要從datasheet中讀取某款相機的光譜響應(yīng)曲線,發(fā)現(xiàn)下面這段代碼[1]。但是最后發(fā)現(xiàn)和自己的需求并不匹配,自己是要最終求出曲線的函數(shù)宅粥,完成由離散的點到數(shù)學(xué)公式的轉(zhuǎn)換過程。這個小demo能夠?qū)崿F(xiàn)的僅僅是re-draw the pictures.
I = imread('target.png');%讀取處理好的圖片电谣,必須是嚴格坐標軸線為邊界的圖片
I=rgb2gray(I); %灰度變化
I(I>200)=255; %二值化
I(I<=200)=0; %二值化
imshow(I) %顯示圖片
figure;
[y,x] = find(I==0); %找出曲線的像素位置
y = max(y) -y; %將屏幕坐標轉(zhuǎn)換為有手系迪卡坐標
plot(x,y,'r.','markersize',2)%顯示轉(zhuǎn)換后的圖像
[Xx,Yy]= ginput(2); % 讀取真是坐標左上角和右下角的兩點
min_x = min(Xx);
max_x = max(Xx);
min_y= min(Yy);
max_y = max(Yy);
% x1 = (x-Xx(1))*(max_x-min_x)/(Xx(2)- Xx(1))+min_x;
% y1 = (y-Yy(1))*(min_y-max_y)/(Yy(2)- Yy(1))+max_y;
%% 坐標變化秽梅,如果坐標原點不為0,則需在該軸加上省去的坐標軸數(shù)
xo = 0;%原始圖像起點坐標x
yo = 0;%原始圖像起點坐標x
xl = 3; %原始圖像x軸長
yl=25; %原始圖像y軸長
x1 = (x - min(Xx))*xl/(max(Xx)-min(Xx))+xo ;%數(shù)據(jù)點x值
y1 = (y - min(Yy))*yl/(max(Yy)-min(Yy))+yo;%數(shù)據(jù)點y值
plot(x1,y1,'r.','markersize',2)
axis([0,3,0,25])
原圖:
原圖
效果圖:
效果圖