画像処理 その2
■ このスレッドは過去ログ倉庫に格納されています
0114デフォルトの名無しさん
NGNG/***** hsi_data[0][g][r] 色相、hsi_data[1][g][r] 彩度、hsi_data[2][g][r] 明度 *****/
void rgb_to_hsi(double ***hsi_data, UCHAR ***rgb_data, int gyou, int retu){
int g,r;
double min_i,max_i;
double R,G,B;
for(g=0; g<gyou; g++)
for(r=0; r<retu; r++){
max_i = (MAX3(rgb_data[0][g][r],rgb_data[1][g][r],rgb_data[2][g][r]))/255.0;
min_i = (MIN3(rgb_data[0][g][r],rgb_data[1][g][r],rgb_data[2][g][r]))/255.0;
hsi_data[2][g][r] = (max_i+min_i)/2.0;
if(max_i - min_i <= EPSILON)
hsi_data[1][g][r] = 0.0;}
else{
if(hsi_data[2][g][r] <= 0.5) hsi_data[1][g][r] = (max_i-min_i)/(max_i+min_i);
else hsi_data[1][g][r] = (max_i-min_i)/(2-max_i-min_i);
R=(max_i-(rgb_data[0][g][r]/255.0))/(max_i-min_i);
G=(max_i-(rgb_data[1][g][r]/255.0))/(max_i-min_i);
B=(max_i-(rgb_data[2][g][r]/255.0))/(max_i-min_i);
if((rgb_data[0][g][r]/255.0 - max_i) <= EPSILON){
hsi_data[0][g][r] = (B-G)*PAI/3;
}else if((rgb_data[1][g][r]/255.0 - max_i) <= EPSILON){
hsi_data[0][g][r] = (2+R-G)*PAI/3;
}else if((rgb_data[2][g][r]/255.0 - max_i) <= EPSILON){
hsi_data[0][g][r] = (4+G-R)*PAI/3;
}
if(hsi_data[0][g][r] < 0)
hsi_data[0][g][r] += 2.0*PAI;
}}}
■ このスレッドは過去ログ倉庫に格納されています