imageJ macro灰度图直方图均衡化代码
width=getWidth();
height=getHeight();
histo=newArray(256);
for (y=0;y<height;y++){
for(x=0;x<width;x++){
v=getPixel(x,y);
histo[v]++;
}
}
cumu=newArray(256);
temp=0;
for(i=0;i<256;i++){
temp+=histo[i];
cumu[i]=temp;
}
max=width*height;
min=0;
for(i=0;i<256;i++){
if (min==0)
min=cumu[i];
}
for (x=0;x<height;x++){
for(y=0;y<width;y++){
v=getPixel(x,y);
setPixel(x,y,round(255*(cumu[v]-min)/(max-min)));
}
}