不需要使用fiji,借助imagej自带的批处理,即可完成对图片进行像素级操作。

 

Process -> Batch -> Macro打开批处理窗口,input选择图片所在目录,处理完成后的图片会放入output所在目录。

操作像素相关函数:

getHeight(); //返回图像高度像素数

getWidth();  //返回图像宽度像素数

getPixel(x,y);  //返回坐标x,y处像素的灰度值,当光标放在打开的图片上时,imagej主程序下方会显示光标所在像素的坐标以及该像素对应的灰度值

getValue(x,y);  //返回坐标x,y处像素的16bit图片校准值或RGB图片强度值,与上一条函数略有不同,根据实际需要选择即可

makeRectangle(x, y, width, height);  //选定一个矩形区域内所有像素。x,y为该矩形左上角像素所在坐标,width是矩形宽度,height为矩形高度(单位:像素)

setPixel(x, y, value);  //修改该坐标的灰度值

makePolygon(x1, y1, x2, y2, x3, y3, ...); //选定一个多边形。括号内是多边形端点坐标,选定区域为这些坐标依次相连后形成的封闭空间

getValue("Mean"); //返回选定区域内所有像素平均灰度值。"mean"可以根据需要改为"Min"、"Max"等其他测量值

setPixel(x,y,value);  //将坐标x,y处像素的灰度改为value

wait(n); 停顿n微秒

示例:将图片的第n列像素灰度设为n%255(%为取余数符号)

ID=getTitle(); //获取图片名
H=getHeight(); //获取图片高度并存入变量H中
W=getWidth();  //获取图片宽度并存入变量W中
run("8-bit");  //转换为8bit灰度图
for(i=0; i<W; i++)//i代表列坐标
{
print("\\Clear");
print("进度: "+i+1+"/"+W); //打印进度
value=i%255;//计算该列灰度值
for(j=0; j<H; j++)//j代表行坐标
{
selectWindow(ID); //选中图片
setPixel(i, j, value); //赋值
}
}

完成后结果在output目录中,图片从左到右逐渐变亮并往复循环。

将image 构建成容器 如何使用image j_imagej