2018-09-07 11:47:58 weixin_43146218 阅读数 176

大数据在政务工作中的应用已经越来越广泛,各个部门都已经尝试借助大数据来提升工作效能。最高人民检察院日前印发《检察大数据行动指南(2017-2020年)》,全国检察机关将依托大数据及人工智能等前沿科技,统筹利用以司法办案数据为核心的检察数据资源,建立检察大数据总体架构,营造大数据应用良好生态,打造“智慧检务”。

本次《行动指南》的编制,旨在明确未来“智慧检务”的发展方向和目标任务,推动检察信息化建设从“服务管理为主”向“服务管理和办案并重”转变;加强统筹规划,积极鼓励、有序引导各地开展大数据建设和应用的探索创新。

全维度数据支撑

大数据时代,最离不开的就是数据,没有了数据一切都是空谈,再厉害的技术也没有用武之地。对于检察工作的日常所涉及的数据量同样是非常巨大的,传统的人工处理起来非常困难,需要借助大数据技术来整理融合相关数据,来实现整体工作效能的提升。中科点击检察院大数据应用平台整合了案例库、法律法律规库、法律文书库三大核心数据资源,构成一个强大的底层核心数据库,实现了工作中所需要的数据资料实时检索和推送,大大提升了检务人员的工作效率。

技术创新驱动价值倍增

大数据应用当中,数据的重要性毋容置疑,它是一切应用的基础,除此之外,大数据技术同样也是推进大数据行业发展的核心动力。没有任何大数据的应用可以脱离技术而存在,没有技术的大数据应用都是纸上谈兵。中科点击从成立之初便是以技术驱动型的企业,多年来形成了独有的技术优势。针对检察院工作的各种需求特性,中科点击采用了最新的图文识别、信息推荐等多种智能算法,分析筛选检务工作中所需求的多种数据类型,建立证据、量刑、逮捕、评查等相关联的数据分析模型,在庞大的数据基础上,精准分析出数据背后和案件相关联的价值信息,用技术实现案件办理的准确性和公正性。

案件审理全程监督

一个案件从受理到最后归档需要很多步骤,需要各个部门之间相互协调来完成,有一个环节出现问题就会导致整个案件的评判受到影响。当前环境下,由于受传统办案流程的制约,检查机关在案件办理过程中面临着各种的问题。受理标准的认识不统一;同案、同罪出现偏差;履职情况是否合规等种种问题时有发生。中科点击检察院大数据应用平台,运用大数据思维,深挖检务工作中的痛点,洞察案件受理的整个周期,从案件受理到最后案件评查一系列流程等全程跟踪,借助各种数据库的权威信息支撑,努力在每一个环节都做到公平、公正。以规范促公正,严格执行办案规范、认真执行权力清单,加强流程监控,实现各负其责、各司其职;以监督促公正,强化案件质量评查和案件研判。

检务工作全面智能化

检务人员的日常工作量非常大,工作类型也非常复杂,用大数据来解决如此大量的工作内容并非易事。中科点击凭借多年的经验积累和技术优势,在政务大数据应用方面已经形成一套成熟、标准化的开发模式。以检察院所需要的各种核心数据为底层基础,以中科点击核心的智能算法模型为中层技术支撑,最后形成最上层属于检务工作人员最直接的应用层。包括电子案卷识别、证据要素抽取、证据项拆解、量刑计算、类案法规推送等聚多种应用于一体的针对检务工作量身定制化的大数据应用平台,覆盖检察院工作的方方面面,从数据到技术,全面实现大数据和检务工作的融合,也标志着检务工作进入智能化新时代。

在大数据时代发展的过程中,从计算机技术、数据分析等各个方面对检察技术有了新的要求,大数据应用前景为检察机关和新兴科技产业的结合搭建了新平台。从智慧检务实践经验来看,大数据的运用对进一步整合司法资源、规范司法行为、深化检务公开、提升工作效能、服务群众等方面都起到了积极的推动作用,有力地提升了检察工作质量,努力真正实现“数据—信息—知识”的转化,助推检察事业的科学发展。

2013-02-20 22:35:43 renshengrumenglibing 阅读数 16259

       进行车牌识别和定位首先要了解车牌的特征以及分类。

车牌主要包括以下几种:

蓝牌白字:普通小型车(其中包括政府机关专用号段、政法部门警车以外的行政用车)的牌照
黄牌黑字:大型车辆、摩托车、驾校教练车牌照
黑牌白字:涉外车辆牌照,式样和蓝牌基本相同
白牌:政法部门(公安、法院、检察院、国安、司法)警车、武警部队车辆、解放军军车的牌照都是白牌
警车:公安警车的牌照样式为[某·A1234警],除“警”为红字外其他的都是黑字,一共4位数字,含义与普通牌照相同

车牌定位的算法分为三类,一类是基于边缘的,一类是基于颜色的,一类是基于机器学习的,这三种方法我都做过实验,基于边缘的最简单也最有效,如果对于收费站和小区的应用,做到99%以上的检测率不是件难事,但如果场景复杂一点,误检会比较多,但并不会漏掉真正的车牌,只是虚警率高点,可以通过先验知识、颜色和后面的分割加以去除,误检不是重点。基于颜色的定位算法,从根本上讲也可以算是基于边缘的一种,无非是利用彩色边缘或者灰度图像边缘和颜色一起来定位,基于颜色的车牌定位算法用于高清图片效果不错,对于一般的场景我认为没必要用颜色进行定位,但初期用颜色先去除一些明显不是车牌的区域还是比较有效的。基于机器学习的算法进行车牌定位或者说检测,关键是找到好的特征和好的训练方法,不少人利用adaboost+haar特征进行车牌检测,从我的实验结果来看,检测率也能达到99%以上,但同时虚警率也非常高,会出现很多误检,而且很难把车牌的区域完整的检测出来,所以如果单独要用机器学习的算法还是不太可行,不过可以先利用边缘信息找到候选区域,然后用adaboost去去除非车牌区域,这个效果还是蛮不错的。

       对于边缘的检测,如果车牌在图像中占的比例不是很小,普通的差分和全局二值化就可以达到很好的效果,如果对于高清图像(譬如要检测几个车道)或者场景很复杂,导致车牌所占图像的比例很小,还有就是车牌处于比较暗的地方,而整个场景很亮,这个时候差分得到的边缘就不会很丰富,如果利用全局二值化就可能导致车牌区域检测不到边缘,解决办法一就是对图像进行灰度拉伸或增强,解决办法二就是换边缘检测的方法(譬如sobel),解决办法三就是改进二值化的方法。对于图像增强的方法我要特别提一下直方图均衡化,很多论文上都会说对输入图片先进行直方图均衡化,但我的实验发现,晚上的图片如果进行直方图均衡化操作后会导致噪点特别多,而且可能会导致车牌区域检测不到边缘,总之图像增强是一把双刃剑,需要慎重考虑。

       如果利用边缘进行定位,关键是要想办法一定要检测出车牌区域的边缘。

       车牌定位,利用边缘是王道,可以先粗检再精检,颜色可以用于精定位和去除误检,机器学习如果想要好的结果得需要好的特征,但目前好像还没有。我个人认为车牌定位的难点不在于找到车牌区域,而在于怎么对车牌区域进行更精确的定位,而精定位的难点在于左右精定位,以便于后面的分割算法。

这里给出一份基于颜色和形状的车牌识别的源代码,基本思路是提取车牌的特征然后根据特征进行筛选。

识别车牌用到的特征:颜色特征、形状特征、大小特征
a 颜色特征

每种车牌的底色具有各自特殊的RGB值,例如程序中使用的蓝底车牌的典型RGB值为 R = 28,G = 63, B = 138; 
当RGB值接近时则认为可能是车牌,将该点像素赋值为255,否则0;利用颜色特征可以获取二值图像,可以去除大部分的其他物体,但是会有很多的干扰。
b、大小特征
对二值图像进行膨胀处理和腐蚀处理之后,可以去掉很小的噪点。对于灰度图获取轮廓边缘,轮廓具有一定的面积。车牌应该具有一定的大小,如果面积过小则认为不是车牌。此法可以去除大部分的小面积的干扰物。
颜色特征和大小特征是初选。形状特征是精选。
c、形状特征
矩形度:提取轮廓之后,轮廓包围的面积和轮廓最小外接矩形的面积之比称为矩形度,值越接近1,则是矩形的概率越大。
长宽比:正常车牌的长宽比为3:1,最小外接矩形的长宽比越接近1则认为是车牌的概率最大。
如果三个筛选条件都符合,则是车牌的概率非常大。

  //主程序lpr.cpp     

#include <cstdio>
#include <cstring>
#include <iostream>
#include<cv.h>
#include<highgui.h>
#include <cmath>
#include "image.h"
using namespace std;
int main(){
    char imageName[12] = "1.jpg";
    char imageDstName[12] = "1_dst.jpg";
    char imageBwName[12]  = "1_bw.jpg";
    IplImage* srcImage = NULL,*image = NULL,*bwImage = NULL;
    
    cvNamedWindow("srcImage",1);
    cvNamedWindow("bwImage",1);
    //cvShowImage("srcImage",srcImage);
    int imageWidth,imageHeight;  
    int maxDif = 50; 
    //找到蓝色区域
    int i= 0,j = 0;
    unsigned char * pPixel = NULL;
    unsigned char   pixelR = 0,pixelG = 0,pixelB = 0;
    unsigned char R = 28,G = 63, B = 138; 

    double length,area,rectArea;
    double rectDegree = 0.0; //矩形度
    double long2Short = 1.0; //体态比
    //计算边界序列的参数 长度 面积 矩形 最小矩形 
    //并输出每个边界的参数
    CvRect rect;
    CvBox2D box;
    int imageCnt = 1;
    double axisLong = 0.0, axisShort = 0.0;
    double temp;

    while ((srcImage = cvLoadImage(imageName,1)) != NULL)
    {
        cvShowImage("srcImage",srcImage); 
        cout<<imageName<<": "<<endl;
        imageWidth = srcImage->width;
        imageHeight = srcImage->height;

        
        image = cvCreateImage(cvSize(imageWidth,imageHeight),8,3);
        //image = cvCloneImage(srcImage);
        Image::cloneImage(srcImage,image);

        bwImage = cvCreateImage(cvGetSize(srcImage),srcImage->depth,1);
        //cvZero(bwImage);
        Image::ZerosImage(bwImage);


        for (i = 0; i< imageHeight;i++)
        {
            for (j = 0;j<imageWidth;j++)
            {
                pPixel = (unsigned char*)srcImage->imageData + i*srcImage->widthStep + j*3;
                pixelB = pPixel[0];
                pixelG = pPixel[1];
                pixelR = pPixel[2];

                if (abs(pixelB - B) < maxDif && abs(pixelG - G)< maxDif && abs(pixelR - R)< maxDif)
                {
                    *((unsigned char*)bwImage->imageData + i*bwImage->widthStep + j) = 255;
                }else {
                    *((unsigned char*)bwImage->imageData + i*bwImage->widthStep + j) = 0;
                }
            }
        }
        cvShowImage("bwImage",bwImage);
        cvSaveImage(imageBwName,bwImage);
         //cvWaitKey(0);
        //膨胀
        //cvDilate(bwImage,bwImage,0,3);
        Image::dilateImage(bwImage,bwImage);
        Image::dilateImage(bwImage,bwImage);
        Image::dilateImage(bwImage,bwImage);

        //cvErode (bwImage,bwImage,0,3);
        Image::erodeImage(bwImage,bwImage);
        Image::erodeImage(bwImage,bwImage);
        Image::erodeImage(bwImage,bwImage);

        cvShowImage("bwImage",bwImage);
        //cvWaitKey(0);

        //新图,将轮廓绘制到dst
        IplImage *dst = cvCreateImage(cvGetSize(srcImage),8,3); 
        //dst = cvCloneImage(srcImage);//赋值为0
        Image::cloneImage(srcImage,dst);
        //寻找轮廓
        CvMemStorage *storage = cvCreateMemStorage(0);
        CvSeq * seq = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint), storage);
        CvSeq * tempSeq = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint), storage);
        int cnt = cvFindContours(bwImage,storage,&seq);//返回轮廓的数目
        cout<<"number of contours   "<<cnt<<endl;
        cvShowImage("bwImage",bwImage);    //难道使用cvFindContours会改变源图像?需要实现保存一下

        for (tempSeq = seq;tempSeq != NULL; tempSeq = tempSeq->h_next)
	    {
		    
		    length = cvArcLength(tempSeq);
		    area =  cvContourArea(tempSeq);
            //筛选面积比较大的区域
            if (area > 1000 && area < 50000)
            {
                
                //cout<<"Points:  "<<tempSeq->total<<endl;
                //外接矩形
                rect = cvBoundingRect(tempSeq,1);
                //绘制轮廓和外接矩形
                //cvDrawContours(dst,tempSeq,CV_RGB(255,0,0),CV_RGB(255,0,0),0);
                //cvRectangleR(dst,rect,CV_RGB(0,255,0));
                //cvShowImage("dst",dst);

                //绘制外接最小矩形
                CvPoint2D32f pt[4];
                box = cvMinAreaRect2(tempSeq,0);
                cvBoxPoints(box,pt);
                //下面开始分析图形的形状特征 
                //长轴 短轴
                axisLong = sqrt(pow(pt[1].x -pt[0].x,2) + pow(pt[1].y -pt[0].y,2));
                axisShort = sqrt(pow(pt[2].x -pt[1].x,2) + pow(pt[2].y -pt[1].y,2));

                if (axisShort > axisLong)
                {  
                    temp = axisLong;
                    axisLong = axisShort;
                    axisShort= temp;
                }  
                rectArea = axisLong*axisShort; 
                rectDegree =  area/rectArea;  
                //体态比or长宽比 最下外接矩形的长轴和短轴的比值
                long2Short = axisLong/axisShort;
             
                if (long2Short> 2.2 && long2Short < 3.8 && rectDegree > 0.63 && rectArea > 3000 && rectArea <50000)
                {
                    cout<<"Length:  "<<length<<endl;
                    cout<<"Area  :  "<<area<<endl;
                    cout<<"long axis :"<<axisLong<<endl;
                    cout<<"short axis: "<<axisShort<<endl;
                    cout<<"long2Short: "<<long2Short<<endl;
                    cout<<"rectArea:  "<<rectArea<<endl;
                    cout<<"rectDegree:  "<<rectDegree<<endl;

                    for(int i = 0;i<4;++i){
                        cvLine(dst,cvPointFrom32f(pt[i]),cvPointFrom32f(pt[((i+1)%4)?(i+1):0]),CV_RGB(255,0,0));
                    }
                }
                //cvShowImage("dst",dst);
                //cvWaitKey();
            }
	    }
        cvShowImage("dst",dst);
        cvSaveImage(imageDstName,dst);
        //cvWaitKey(0);

        imageCnt++;
        sprintf(imageName,"%d.jpg",imageCnt);
        sprintf(imageBwName,"%d_bw.jpg",imageCnt);
        sprintf(imageDstName,"%d_dst.jpg",imageCnt);
        cout<<"\n\n";
    }

    return 0;
}

 

//image类

//image.h

#pragma once
#include "cv.h"
#include<highgui.h>
class Image
{
public:
    Image(void);
    ~Image(void);
    static void cloneImage(IplImage *src,IplImage*dst);
    static void ZerosImage(IplImage * src);
    static void dilateImage(IplImage* src, IplImage *dst);
    static void erodeImage(IplImage* src,IplImage*dst);
    static void rgb2gray(IplImage* src, IplImage* dst);
    static void gray2bw(IplImage* src, IplImage* dst,unsigned char value);
};

//image.cpp

#include "Image.h"


Image::Image(void)
{
}


Image::~Image(void)
{
}

void Image::cloneImage(IplImage *src,IplImage*dst){
    int nChannels = src->nChannels;
    int imageHeight = src->height;
    int imageWidth  = src->width;
    unsigned char *pPixel= NULL;
    unsigned char *pPixel2= NULL;
    if (nChannels == 1)
    {
        for (int i = 0; i< imageHeight;i++)
        {
            for (int j = 0; j< imageWidth ;j++)
            {
                pPixel  = (unsigned char *)src->imageData + i*src->widthStep+j;
                pPixel2 = (unsigned char *)dst->imageData + i*dst->widthStep+j; 
                pPixel2[0] = pPixel[0];                          
            }
        }
    }else if (nChannels == 3)
    {
        for (int i = 0; i< imageHeight;i++)
        {
            for (int j = 0; j< imageWidth ;j++)
            {
                pPixel  = (unsigned char *)src->imageData + i*src->widthStep+3*j;
                pPixel2 = (unsigned char *)dst->imageData + i*dst->widthStep+3*j; 
                pPixel2[0] = pPixel[0];
                pPixel2[1] = pPixel[1];
                pPixel2[2] = pPixel[2];                            
            }
        }
    }
}
void Image::ZerosImage(IplImage * src){
    int nChannels = src->nChannels;
    int imageHeight = src->height;
    int imageWidth  = src->width;
    unsigned char *pPixel= NULL;
    unsigned char *pPixel2= NULL;
    if (nChannels == 1)
    {
        for (int i = 0; i< imageHeight;i++)
        {
            for (int j = 0; j< imageWidth ;j++)
            {
                pPixel  = (unsigned char *)src->imageData + i*src->widthStep+j;
                pPixel[0] = 0;                          
            }
        }
    }else if (nChannels == 3)
    {
        for (int i = 0; i< imageHeight;i++)
        {
            for (int j = 0; j< imageWidth ;j++)
            {
                pPixel  = (unsigned char *)src->imageData + i*src->widthStep + 3*j; 
                pPixel[0] = 0;
                pPixel[1] = 0;
                pPixel[2] = 0;                            
            }
        }
    }

}
//膨胀
void Image::dilateImage(IplImage* src, IplImage *dst){
    int nChannels = src->nChannels;
    int imageHeight = src->height;
    int imageWidth  = src->width;
    IplImage * tmpDst = cvCreateImage(cvSize(imageWidth,imageHeight),src->depth,src->nChannels);
    ZerosImage(tmpDst);
    unsigned char *pPixel= NULL;
    unsigned char *pPixel2= NULL;
    CvSize windowSize = cvSize(3,3);
    int SW2 = windowSize.width/2;
    int SH2 = windowSize.height/2;

    if (nChannels == 1)
    {
        for (int i = 1; i< imageHeight - 1;i++)
        {
            for (int j = 1; j< imageWidth - 1 ;j++)
            {
                pPixel  = (unsigned char *)tmpDst->imageData + i*tmpDst->widthStep+j;
                for (int m = i - SH2 ; m <= i+SH2; m++)
                {
                    for (int n = j - SW2; n <= j+SW2;n++)
                    {
                        pPixel2  = (unsigned char *)src->imageData + m*src->widthStep + n;
                        if (pPixel2[0] == 255)
                        {
                            pPixel[0] = 255;
                        }
                    }
                }
            }
        }
    }else if (nChannels == 3)
    {
       //不是灰度图像,报错
    }

    //拷贝图像
    cloneImage(tmpDst,dst);
    //cvShowImage("dst",dst);
    //cvWaitKey(0);
}
void Image::erodeImage(IplImage* src,IplImage*dst){
    int nChannels = src->nChannels;
    int imageHeight = src->height;
    int imageWidth  = src->width;
    IplImage * tmpDst = cvCreateImage(cvSize(imageWidth,imageHeight),src->depth,src->nChannels);
    ZerosImage(tmpDst);
    unsigned char *pPixel= NULL;
    unsigned char *pPixel2= NULL;
    CvSize windowSize = cvSize(3,3);
    int SW2 = windowSize.width/2;
    int SH2 = windowSize.height/2;
    int flag = 0;

    if (nChannels == 1)
    {
        for (int i = 1; i< imageHeight - 1;i++)
        {
            for (int j = 1; j< imageWidth - 1 ;j++)
            {
                pPixel  = (unsigned char *)tmpDst->imageData + i*tmpDst->widthStep+j;
                flag = 0;
                for (int m = i - SH2 ; m <= i+SH2; m++)
                {
                    for (int n = j - SW2; n <= j+SW2;n++)
                    {
                        pPixel2  = (unsigned char *)src->imageData + m*src->widthStep + n;
                        if (pPixel2[0] == 0)
                        {
                            flag = 1;
                        }
                    }
                    if (flag == 0)
                    {
                        //
                        pPixel[0] = 255;
                    }else {
                        pPixel[0] = 0;
                    }

                }
            }
        }
    }else if (nChannels == 3)
    {
        //不是灰度图像,报错
    }

    //拷贝图像
    cloneImage(tmpDst,dst);
    //cvShowImage("dst",dst);
    //cvWaitKey(0);
}

void Image::rgb2gray(IplImage* src, IplImage* dst){
    //Gray = 0.29900 * R + 0.58700 * G + 0.11400 * B
    int nChannels = src->nChannels;
    int imageHeight = src->height;
    int imageWidth  = src->width;
    unsigned char *pPixel= NULL;
    unsigned char *pPixel2= NULL;
    unsigned char R ,G, B;
    unsigned char grayPixle = 0;

    if (nChannels == 3)
    {
        for (int i = 0; i< imageHeight;i++)
        {
            for (int j = 0; j< imageWidth ;j++)
            {
                pPixel  = (unsigned char *)src->imageData + i*src->widthStep+j*3;
                pPixel2 = (unsigned char *)dst->imageData + i*dst->widthStep+j;
                B = pPixel[0];
                G = pPixel[1];
                R = pPixel[2];
                grayPixle = (unsigned char)(0.29900 * R + 0.58700 * G + 0.11400 * B);
                pPixel2[0] = grayPixle;                          
            }
        }
    }else if (nChannels == 1)
    {
        //不是RGB图像,报错
    }
}
void Image::gray2bw(IplImage* src, IplImage* dst,unsigned char value){
    int nChannels = src->nChannels;
    int imageHeight = src->height;
    int imageWidth  = src->width;
    unsigned char *pPixel= NULL;
    unsigned char *pPixel2= NULL;
    if (nChannels == 1)
    {
        for (int i = 0; i< imageHeight;i++)
        {
            for (int j = 0; j< imageWidth ;j++)
            {
                pPixel  = (unsigned char *)src->imageData + i*src->widthStep+j;
                pPixel2  = (unsigned char *)dst->imageData + i*dst->widthStep+j;
                if (pPixel[0] > value)
                {
                    pPixel2[0] = 255;
                }else {
                    pPixel2[0] = 0;
                }
                                          
            }
        }
    }else if (nChannels == 3)
    {
       //不是灰度图像,报错
    }
}

效果图:(最终的效果用红色框框出)









源码以及测试图片下载地址:http://download.csdn.net/detail/renshengrumenglibing/5073845


2008-09-22 05:41:00 yuanmeng001 阅读数 3354

     918日,苏州市人民检察院批准逮捕番茄花园作者洪磊一事说明,洪磊的番茄花园修改版权XP以及其相关行为触犯了我国的有关法律。在两天之内,该消息被国内19,200个大小网站媒体转载,可谓“四海皆知”也。那么,我们要问,洪磊的铁杆分子是怎么看待洪磊被正式逮捕的?

         我国是一个法制国家,对于知识产权的保护是认真的。番茄花园洪磊被正式逮捕一事表明,他触犯了我国的相关法律。但是,根据新浪科技频道就此事进行的一项专门调查,我们不难发现:在确知洪磊正式被逮捕之后,在短短两天之内,新增加11,977人进行网上投票,有8,862人仍然表示支持番茄花园,占这两天新投票人数的75%(在此之前为80.55%)。这说明了什么?

        根据新浪网的这项调查,在我国计算机个人用户中,使用各类修改版XP的人数很多,形成了一个巨大的群体(近70%的人正在使用)。他们之所以支持番茄花园,主要是因为番茄花园修改版XP修改(屏蔽)了微软正版XP的激活功能,而这正是作为商业软件Win XP的主要特征。有人公然声称,洪磊修改XP的行为是“合法的”,“创造了新的价值”,这简直就像一个法盲在胡言乱语。在确知检察院正式下令逮捕洪磊之后,仍然公开表示对洪磊番茄花园的支持,他们根本不把洪磊被检察院批准正式逮捕当回事情。据此,我们只能称其为(洪磊的)“铁杆分子”,别无其他说法。

         今后,洪磊的支持者将何去何从?微软XP还能够存在多久?昨天下午,我为此冒雨前往北京西单图书大厦,发现:正在陈列出售的Vista图书的种类、数量是XP2.5倍(左右),更令人感到有点意外的是,Linux类图书(整整占据3个多书架)竟然是Vista23倍,其中今年8月份才出版的新书“活学活用Ubuntu”Ubuntu(中国)编写,55元一本)只剩下一本了。这说明XP确实老矣,时间在前进。还有一件趣事,我站在Vista书架前面,翻阅一本“Vista傻瓜书”,在整整20多 分钟时间里面,不见有一人过来翻阅XPVista的书籍,而在Linux书架前面,站着的,蹲着的,挤满了人头。这是怎么搞的 ?人们难道开始喜欢Linux?拼死拼活地支持修改版XP的铁杆分子应该清醒了,不妨去逛逛西单图书大厦吧!

         920日,我去北京邮电大学参加《世界软件自由日》庆祝活动,在会议期间,我和SUN公司佟佳珏总监坐在一起,我问他,今年全国有多少学校举行这种庆祝活动?他回头把SUN公司的一位工作人员叫过来,问了一下,告诉我:46所。我大为吃惊,全国竟然有46所大学在搞这种有点“反叛”意味的庆祝活动。会议期间,有人向大会报告人提出一个问题:为什么在我们的教学大纲里面没有反映出自由软件的最新进展?弄得大会报告人真的是无言以答。

       (小注:在北邮这次庆祝大会上,我公开演示了自启动U盘,获得掌声一片。)

2011-05-27 09:52:24 weixin_33786077 阅读数 35

本文转载自新浪援引北京晚报的报道:

   各类执业资格考试带出的试题“市场”,加上境外机构对我国政治、军事、科技活动的窥探,使得近年来的泄密类渎职案件呈高发态势。记者昨日从西城检察院的 一份调研中发现,科研人员和单位已成为主要泄密源。2008年至2010年,西城检察院共立案侦查渎职犯罪案件13件,泄密案件7件。其中,故意泄露国家秘密案5件,过失泄露国家秘密案2件。

  一张试卷获利百万

  在西城检察院办理的李某、杨某故意泄露国家秘密案中,湖北省某市人事局一名干部与人合谋,利用提取国家一级建造师考试试卷的职务便利,私拆试卷
复印后卖给不法分子龙某,从中获利100万元。随后,龙某又将考题卖给李某、杨某。李、杨二人以函授教学的形式将考题卖给下属分校,并通过开设辅导班将考
题泄露给考生,从中获利20余万元。最终,李某被判处有期徒刑3年,杨某被判处有期徒刑1年、缓刑1年。

  有需求,就有市场。一些考生为了个人的发展投机取巧,千方百计接近出题人,四处打探考题,一些不法分子见有利可图,开始不择手段。尤其是一些考
前辅导班,以高通过率为诱饵招揽学员,买题、窃题,然后转手高价卖题,从中牟取非法利益。据检察官介绍,各类考试试题已经成为了主要泄密内容。

  科研人员大意泄密

  在一起过失泄露国家秘密案中,犯罪嫌疑人董某是中科院某研究室副主任、研究员,他多次违反保密规定,在个人计算机上存储、处理涉密信息并连接互联网,结果被境外间谍情报机构植入特种***后受到远程控制,对方从该计算机内窃取文件资料3161份,其中机密级国家秘密8份,秘密级国家秘密15份。

  检察官表示,境外间谍组织、情报机构大多利用网络***窃取信息。随着网络技术的迅猛发展,网络***手段越来越工具化和智能化,***利用网络进行窃密的手段更是层出不穷,造成大量信息泄露、丢失,对国家党政机关和军队的一些重要部门以及涉密单位的信息安全威胁巨大。

  泄密造成考试停考

  检察官发现,在这些泄密案中,涉案人员往往都签订了保密协议,相关保密法学习和保密培训教育也是有记录可查。仍然发生泄密的根本原因就是思想上的放松懈怠、侥幸心理以及保密工作疏忽。

  被告人孟某所在单位负责每年国家医师资格考试的试题开发、组卷和审卷工作。2003年,孟某因工作关系结识了某医学院教授王某某,王某某以给孟某之妻在论文发表、业务进修等方面提供便利为由,请求孟某向其提供执业医师考题。孟某分别在2005年、2006年、2007年医学考试前夕,从单位的涉密计算机中将当年考题整理出标准答案并用U盘复制后交给某医学院教授王某某,后者再以考前辅导的形式将试题泄露给考生,造成重大泄密事件。导致原定于2007年9月进行的医学考试停考,给国家造成7000余万元的经济损失和重大政治影响。

  事实上,孟某与王某某并没有金钱上的交易,孟某这样做除有利益上的交换外,也是为了显示自己有能力、能办事。直至王某某被抓时,他还没有意识到自己会被追究刑事责任。

本报记者 孙莹 通讯员 马鲁原 刘珣

【参考】
【数据安全案例】案例汇总

2019-01-29 18:52:50 weixin_34122604 阅读数 50
2018年浙江检察机关办理公益诉讼案件5551件

中新网杭州1月29日电(记者 胡哲斐)29日,浙江省人民检察院检察长贾宇作浙江省人民检察院工作报告时介绍,去年,该省检察机关办理公益诉讼案件5551件。通过行政诉前程序督促行政机关严格依法履职4059件,提起行政、民事公益诉讼218件,法院审结支持164件。

2018年浙江检察机关办理公益诉讼案件5551件

浙江省人民检察院检察长贾宇作浙江省人民检察院工作报告。 王刚 摄

2017年,检察机关提起公益诉讼制度正式确立,规定检察机关在生态环境和资源保护、食品药品安全等领域开展民事公益诉讼工作,在生态环境和资源保护、食品药品安全、国有财产保护、国有土地使用权出让等领域开展行政公益诉讼工作。此外,根据2018年颁布的英雄烈士保护法,检察机关可提起公益诉讼保护英烈权益。

去年,在生态环境和资源保护领域,浙江检察机关以“水、土、林、矿”为重点,办理公益诉讼3263件,督促处置固废垃圾40.9万吨、整治关停企业63家。

在食品药品安全领域,浙江检察机关开展“保障千家万户舌尖上的安全”专项监督,办理公益诉讼1819件,监督查处不合格食品药品45.8吨。如针对狂犬病和百白破问题疫苗引发的群众担忧,杭州、金华、台州等地检察机关开展疫苗领域专项检察,从义乌监督召回人用狂犬病疫苗1.4万支。

此外,浙江检察机关还办理国有财产保护和国有土地使用权出让领域公益诉讼469件,督促监管部门收回国有财产3.2亿元,收回国有土地使用权167.7亩。该省还探索其他领域公益诉讼,如宁波市海曙区人民检察院通过办理“骚扰电话整治公益诉讼案”,督促通信管理部门整治骚扰电话乱象。

贾宇介绍,去年6月底,浙江全省三级检察院同时成立公益损害与诉讼违法举报中心,让群众对侵害公共利益等现象“告状有门”“维权有路”。受理举报7247件,发出纠正违法通知书、检察建议2547件,已纠正整改1705件。

谈及2019年工作,贾宇表示,浙江将加大生态环境、食品药品安全等领域的犯罪惩治和公益诉讼力度。以检察机关内设机构改革为突破口,统筹推进各项检察职能协同高效运行,做优刑事检察,做强民事检察,做实行政检察,做好公益诉讼,推进法律监督全面协调充分发展。(完)

没有更多推荐了,返回首页