职责:对图像进行边缘检测

学业是武汉大学庆先生的机器视觉编程作业(00)

思路:

 

  1. )将图像的灰度数值进行0-255的维度统计;
  2. )EM算法分析有几个为主显示区块的灰度;
  3. )使用通用的界限检测算法(具体哪一样种植待定)。

次第功能说明

编辑于2017.12.24 15:45

基础作用:1,显示平摆图纸;2,将鼠标所在点周围的正方形灰度坐标显示在10X10之表格中,实时显示;

 EM算法的使参考:

增长效益:1,显示是选定正方形区块的灰度分布直方图;2,有一个直观的实时显示的3D矩阵图来展示灰度信息;

# -*- coding: utf-8 -*-
"""
Created on Tue Oct 24 18:40:00 2017

@author: nvidia
"""

#EM Algorithm

from numpy import *
import numpy as np
import random
import copy

SIGMA = 6
EPS = 0.0001
#生成方差相同,均值不同的样本
def generate_data():
    Miu1 = 20
    Miu2 = 40
    N = 1000
    #N = 10000
    X = mat(zeros((N,1)))
    for i in range(N):
        temp = random.uniform(0,1)
        if(temp > 0.5):
            X[i] = temp*SIGMA + Miu1
        else:
            X[i] = temp*SIGMA + Miu2
    return X

#EM算法 key
def my_EM(X):
    k = 2
    N = len(X)
    Miu = np.random.rand(k,1)
    print "This is the origenal key :\n",Miu
    Posterior = mat(zeros((N,2)))
    dominator = 0
    numerator = 0
    #先求后验概率
    for iter in range(1000):
        for i in range(N):
            dominator = 0
            for j in range(k):
                dominator = dominator + np.exp(-1.0/(2.0*SIGMA**2) * (X[i] - Miu[j])**2)
                #print dominator,-1/(2*SIGMA**2) * (X[i] - Miu[j])**2,2*SIGMA**2,(X[i] - Miu[j])**2
                #return
            for j in range(k):
                numerator = np.exp(-1.0/(2.0*SIGMA**2) * (X[i] - Miu[j])**2)
                Posterior[i,j] = numerator/dominator
        oldMiu = copy.deepcopy(Miu)
        #最大化
        for j in range(k):
            numerator = 0
            dominator = 0
            for i in range(N):
                numerator = numerator + Posterior[i,j] * X[i]
                dominator = dominator + Posterior[i,j]
            Miu[j] = numerator/dominator
        print Miu
        #print (abs(Miu - oldMiu)).sum()
            #print '\n'
        if (abs(Miu - oldMiu)).sum() < EPS:
            print Miu
            print iter
            print (abs(Miu - oldMiu)).sum()
            break


if __name__ == '__main__':
    X = generate_data()
    my_EM(X)

参考往届师兄师姐的源程序  此处原本是来源码地址的但是由源程序不是团结的用未太好享受

 

 

统计 1

 

温馨的编程思路

平台python36、多线程、tk界面等库

数据结构:暂定只利用灰度数据
全局变量:
data [i,j] 前行后列 显示数据阵列
site_xy 鼠标统计所在的位置点

一些变量:
data_xy 显示统计直方图
data_xyz 显示3D图

线程设置:
1,(实时显示)灰度值显示的数据表格;
2,(实时显示)直方图显示;
3,(点击显示)3D图谱;