求助大神,论文里这种ostu的改进方法要怎么写怎么复现?!!!

IreneTa 2018-11-05 10:46:46

ostu源码,要改阈值选择规则...

from PIL import Image

im = Image.open('maize.jpg')
im = im.convert('L')
width, height = im.size
# img_pix;图像像素数
img_pix=width*height
pix = im.load()
#直方图hist
hist=im.histogram()
#img_gray;图像灰度和
img_gray=0;
for i in range(256):
img_gray +=i*hist[i];
# img_avg_gray;图像平均灰度
img_avg_gray=img_gray/img_pix;
front_pix=0;# front_pix;前景像素数
front_sum_gray=0;# front_sum_gray;前景灰度和
temp=0;
Th=0;
for t in range(256):

front_pix +=hist[t];
front_pix_per=front_pix/img_pix;# front_pix_per;前景像素占比
bg_pix=img_pix-front_pix;# bg_pix;背景像素数
bg_pix_per=bg_pix/img_pix;# bg_pix_per;背景像素占比
if front_pix == 0:
continue;
if bg_pix==0:
break;
front_sum_gray +=hist[t]*t;
front_avg_gray=front_sum_gray/front_pix;# front_ave_gray;前景像素平均灰度
bg_sum_gray=img_gray-front_sum_gray;# bg_sum_gray;背景像素灰度和
bg_avg_gray = bg_sum_gray/bg_pix;# bg_avg_gray;背景像素平均灰度

g=front_pix_per*bg_pix_per*(front_avg_gray-bg_avg_gray)*(front_avg_gray-bg_avg_gray)
# g;类间方差
# g = front_pix_per * (front_avg_gray - img_avg_gray)*(front_avg_gray - img_avg_gray)+
# bg_pix_per* (bg_avg_gray - img_avg_gray)*(bg_avg_gray - img_avg_gray)
if g >=temp:
temp = g;
Th = t;
for w in range(width):
for h in range(height):
if pix[w,h]>Th:
pix[w,h]=255;
if pix[w,h]<=Th:
pix[w,h]=0;
im.show();

...全文
47 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧