نوشته‌ها

تکنولوژی EFFIO-V و EFFIO-A چیست؟

تکنولوژی EFFIO-V و EFFIO-A که توسط شرکت سونی به بازار عرضه شده اند با قابلیت و عملکردهای بسیار توسعه یافته به عنوان نسل سوم سری EFFIO در نظر گرفته می شود.

این دو محصول جدید میتوانند با سنسور تصویر ۹۶۰H ترکیب شده تا بتوانند کیفیت تصویری بالاتر از ۷۰۰ تی وی لاین را ایجاد نماید. همچنین این آی سی ها بهبود یافتند تا قابلیت هایی از قبیل کاهش نویز سه بعدی (۳D-NR)و قرار گرفتن در معرض مادون قرمز و طیف گسترده ای پویا (WDR) و یا مه زدا DEFOG)) و نمایش تصاویر در شرایط مختلف مانند نور کم ، نور مادون قرمز و نور زیاد که کاملا توسعه یافته در عملکرد خود داشته باشند. علاوه بر این این آی سی ها برای اولین بار قابلیت تشخیص اتوماتیک به صورت صنعتی و انتخاب صحنه را دارا هستند.

EFFIO-V و EFFIO-A ، اصلاح شده تا پردازشگر سیگنال را با وضوح بالا انجام دهد و رزولوشن بالای ۷۰۰تی وی لاین را ایجاد کند که این رزولوشن بالاتر از رزولوشن سری های EFFIOموجود ۶۵۰ تی وی لاین است .

EFFIO-V و EFFIO-A

قابلیت کاهش نویز سه بعدی

این تکنولوژی تاری موضوعات در حال حرکت ، روشنی و سیگنال به نویز تصاویری که حتی در محیط های کم نور هستند را کاهش می دهد. همچنین به طور موثر از شرایط زمانی که انعکاس نور مادون قرمز بیش از حد شده باشد و یا جزئیات نفر پنهان شده باشد و یا زمانی که در اطراف لبه ای بیرونی تصاویر و یا گوشه های تاریک شده (سایه) باشد جلوگیری می کند.
بنابراین قابلیت این تکنولوژی بهبود بخشیدن تصاویر در محیط های کم نور می باشد.

این محصولات عملکرد مناسب در هر شرایطی برای تنظیم تصاویر را دارا هستند . بعضی از نصب ها زمان زیادی برای تنظیم چند دوربین با ویژگی های مختلف برای کیفیت بهتر را از ما می گیرند . اما EFFIO-V و EFFIO-A قابلیت تشخیص اتوماتیک صحنه را دارند و فقط نیاز به یک عملکرد برای ۴۰الگو در صحنه های تصاویر را برای تصویری ایده آل مثل محدوده دینامیکی ، درجه حرارت ، رنگ را دارد. قابلیت انتخاب صحنه از پیش تنظیم شده برای صحنه های عمومی از جمله دوربین های محیط داخل و محیط خارج نصب شده یا نظارت ترافیکی و یا نور پس زمینه تنظیمات اتوماتیک آنها بر پایه تنظیمات برای کیفیت تصویر ایده آل می باشد .

این قابلیت تنظیمات اتوماتیک برای آسان تر شدن نصب و راه اندازی تصاویر با کیفیت است .

 

EFFIO-V و EFFIO-A

 

 

 

استفاده از EFFIO-V و EFFIO-A

استفاده از EFFIO-V و EFFIO-A

 

 

تاری در سایر ccd ها

سایر ccd ها

 

 

منبع

 
Item Effio-V Effio-A
Supported CCDs ۷۶۰ H, 960 H WDR/normal CCD ۷۶۰ H, 960 H normal CCD
 

 

 

 

 

 

 

 

 

 

Functions

Resolution Horizontal over 700 TV lines
WDR
ATR-EX2
Noise reduction ۲D-NR, 3D-NR
Day & Night
Polygon privacy mask Up to 20 masks
E-zoom
Slow shutter
Digital image stabilizer
BLC/HLC
Automatic scene detection function
Scene selection function
AF detector
Motion detection
White pixel detection compensation Static and dynamic
OSD Flexible 8 languages
Lens shading compensation
Defog
Automatic mechanical iris adjustment
External synchronization LL, VSL
RS-485
Coaxial communication ✔ (Coaxitron by Pelco)
Outputs Analog outputs Y/C separate, composite
Digital outputs ITU-R BT.656 compliant
(۲۷ MHz / 36 MHz)
Package ۹۷-pin LFBGA

 

مرحله ۴: سرکوب لبه های غیر حداکثر

آخرین مرحله، پیدا کردن لبه های ضعیف که موازی با لبه های قوی هستند و از بین بردن آنهاست. این عمل، با بررسی پیکسل های عمود بر یک پیکسل لبه خاص و حذف لبه های غیر حداکثرانجام شده است. کد مورد استفاده بسیار مشابه کد ردیابی لبه است.

 

</pre>
<pre>#include "stdafx.h"
#include "tripod.h"
#include "tripodDlg.h"

#include "LVServerDefs.h"
#include "math.h"
#include <fstream>
#include <string>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

using namespace std;

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTripodDlg dialog

CTripodDlg::CTripodDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTripodDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTripodDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

	//////////////// Set destination BMP to NULL first 
	m_destinationBitmapInfoHeader = NULL;

}

////////////////////// Additional generic functions

static unsigned PixelBytes(int w, int bpp)
{
    return (w * bpp + 7) / 8;
}

static unsigned DibRowSize(int w, int bpp)
{
    return (w * bpp + 31) / 32 * 4;
}

static unsigned DibRowSize(LPBITMAPINFOHEADER pbi)
{
    return DibRowSize(pbi->biWidth, pbi->biBitCount);
}

static unsigned DibRowPadding(int w, int bpp)
{
    return DibRowSize(w, bpp) - PixelBytes(w, bpp);
}

static unsigned DibRowPadding(LPBITMAPINFOHEADER pbi)
{
    return DibRowPadding(pbi->biWidth, pbi->biBitCount);
}

static unsigned DibImageSize(int w, int h, int bpp)
{
    return h * DibRowSize(w, bpp);
}

static size_t DibSize(int w, int h, int bpp)
{
    return sizeof (BITMAPINFOHEADER) + DibImageSize(w, h, bpp);
}

/////////////////////// end of generic functions


void CTripodDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTripodDlg)
	DDX_Control(pDX, IDC_PROCESSEDVIEW, m_cVideoProcessedView);
	DDX_Control(pDX, IDC_UNPROCESSEDVIEW, m_cVideoUnprocessedView);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CTripodDlg, CDialog)
	//{{AFX_MSG_MAP(CTripodDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDEXIT, OnExit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTripodDlg message handlers

BOOL CTripodDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here

	// For Unprocessed view videoportal (top one)
	char sRegUnprocessedView[] = "HKEY_LOCAL_MACHINE\\Software\\UnprocessedView";
	m_cVideoUnprocessedView.PrepareControl("UnprocessedView", sRegUnprocessedView, 0 );	
	m_cVideoUnprocessedView.EnableUIElements(UIELEMENT_STATUSBAR,0,TRUE);
	m_cVideoUnprocessedView.ConnectCamera2();
	m_cVideoUnprocessedView.SetEnablePreview(TRUE);

	// For binary view videoportal (bottom one)
	char sRegProcessedView[] = "HKEY_LOCAL_MACHINE\\Software\\ProcessedView";
	m_cVideoProcessedView.PrepareControl("ProcessedView", sRegProcessedView, 0 );	
	m_cVideoProcessedView.EnableUIElements(UIELEMENT_STATUSBAR,0,TRUE);
	m_cVideoProcessedView.ConnectCamera2();
	m_cVideoProcessedView.SetEnablePreview(TRUE);

	// Initialize the size of binary videoportal
	m_cVideoProcessedView.SetPreviewMaxHeight(240);
	m_cVideoProcessedView.SetPreviewMaxWidth(320);

	// Uncomment if you wish to fix the live videoportal's size
	// m_cVideoUnprocessedView.SetPreviewMaxHeight(240);
	// m_cVideoUnprocessedView.SetPreviewMaxWidth(320);

	// Find the screen coodinates of the binary videoportal
	m_cVideoProcessedView.GetWindowRect(m_rectForProcessedView);
	ScreenToClient(m_rectForProcessedView);
	allocateDib(CSize(320, 240));

	// Start grabbing frame data for Procssed videoportal (bottom one)
	m_cVideoProcessedView.StartVideoHook(0);

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CTripodDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CTripodDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CTripodDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CTripodDlg::OnExit() 
{
	// TODO: Add your control notification handler code here

	// Kill live view videoportal (top one)
	m_cVideoUnprocessedView.StopVideoHook(0);
    m_cVideoUnprocessedView.DisconnectCamera();	
	
	// Kill binary view videoportal (bottom one)
	m_cVideoProcessedView.StopVideoHook(0);
    m_cVideoProcessedView.DisconnectCamera();	

	// Kill program
	DestroyWindow();	

	

}

BEGIN_EVENTSINK_MAP(CTripodDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CTripodDlg)
	ON_EVENT(CTripodDlg, IDC_PROCESSEDVIEW, 1 /* PortalNotification */, OnPortalNotificationProcessedview, VTS_I4 VTS_I4 VTS_I4 VTS_I4)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CTripodDlg::OnPortalNotificationProcessedview(long lMsg, long lParam1, long lParam2, long lParam3) 
{
	// TODO: Add your control notification handler code here
	
	// This function is called at the camera's frame rate
    
#define NOTIFICATIONMSG_VIDEOHOOK	۱۰

	// Declare some useful variables
	// QCSDKMFC.pdf (Quickcam MFC documentation) p. 103 explains the variables lParam1, lParam2, lParam3 too 
	
	LPBITMAPINFOHEADER lpBitmapInfoHeader; // Frame's info header contains info like width and height
	LPBYTE lpBitmapPixelData; // This pointer-to-long will point to the start of the frame's pixel data
    unsigned long lTimeStamp; // Time when frame was grabbed

	switch(lMsg) {
		case NOTIFICATIONMSG_VIDEOHOOK:
			{
				lpBitmapInfoHeader = (LPBITMAPINFOHEADER) lParam1; 
				lpBitmapPixelData = (LPBYTE) lParam2;
				lTimeStamp = (unsigned long) lParam3;

				grayScaleTheFrameData(lpBitmapInfoHeader, lpBitmapPixelData);
				doMyImageProcessing(lpBitmapInfoHeader); // Place where you'd add your image processing code
				displayMyResults(lpBitmapInfoHeader);

			}
			break;

		default:
			break;
	}	
}

void CTripodDlg::allocateDib(CSize sz)
{
	// Purpose: allocate information for a device independent bitmap (DIB)
	// Called from OnInitVideo

	if(m_destinationBitmapInfoHeader) {
		free(m_destinationBitmapInfoHeader);
		m_destinationBitmapInfoHeader = NULL;
	}

	if(sz.cx | sz.cy) {
		m_destinationBitmapInfoHeader = (LPBITMAPINFOHEADER)malloc(DibSize(sz.cx, sz.cy, 24));
		ASSERT(m_destinationBitmapInfoHeader);
		m_destinationBitmapInfoHeader->biSize = sizeof(BITMAPINFOHEADER);
		m_destinationBitmapInfoHeader->biWidth = sz.cx;
		m_destinationBitmapInfoHeader->biHeight = sz.cy;
		m_destinationBitmapInfoHeader->biPlanes = 1;
		m_destinationBitmapInfoHeader->biBitCount = 24;
		m_destinationBitmapInfoHeader->biCompression = 0;
		m_destinationBitmapInfoHeader->biSizeImage = DibImageSize(sz.cx, sz.cy, 24);
		m_destinationBitmapInfoHeader->biXPelsPerMeter = 0;
		m_destinationBitmapInfoHeader->biYPelsPerMeter = 0;
		m_destinationBitmapInfoHeader->biClrImportant = 0;
		m_destinationBitmapInfoHeader->biClrUsed = 0;
	}
}

void CTripodDlg::displayMyResults(LPBITMAPINFOHEADER lpThisBitmapInfoHeader)
{
	// displayMyResults: Displays results of doMyImageProcessing() in the videoport
	// Notes: StretchDIBits stretches a device-independent bitmap to the appropriate size

	CDC				*pDC;	// Device context to display bitmap data
	
	pDC = GetDC();	
	int nOldMode = SetStretchBltMode(pDC->GetSafeHdc(),COLORONCOLOR);

	StretchDIBits( 
		pDC->GetSafeHdc(),
		m_rectForProcessedView.left,				// videoportal left-most coordinate
		m_rectForProcessedView.top,					// videoportal top-most coordinate
		m_rectForProcessedView.Width(),				// videoportal width
		m_rectForProcessedView.Height(),			// videoportal height
		۰,											// Row position to display bitmap in videoportal
		۰,											// Col position to display bitmap in videoportal
		lpThisBitmapInfoHeader->biWidth,			// m_destinationBmp's number of columns
		lpThisBitmapInfoHeader->biHeight,			// m_destinationBmp's number of rows
		m_destinationBmp,							// The bitmap to display; use the one resulting from doMyImageProcessing
		(BITMAPINFO*)m_destinationBitmapInfoHeader, // The bitmap's header info e.g. width, height, number of bits etc
		DIB_RGB_COLORS,								// Use default 24-bit color table
		SRCCOPY										// Just display
	);
 
	SetStretchBltMode(pDC->GetSafeHdc(),nOldMode);

	ReleaseDC(pDC);

	// Note: 04/24/02 - Added the following:
	// Christopher Wagner cwagner@fas.harvard.edu noticed that memory wasn't being freed

	// Recall OnPortalNotificationProcessedview, which gets called everytime
	// a frame of data arrives, performs 3 steps:
	// (۱) grayScaleTheFrameData - which mallocs m_destinationBmp
	// (۲) doMyImageProcesing
	// (۳) displayMyResults - which we're in now
	// Since we're finished with the memory we malloc'ed for m_destinationBmp
	// we should free it: 
	
	free(m_destinationBmp);

	// End of adds
}

void CTripodDlg::grayScaleTheFrameData(LPBITMAPINFOHEADER lpThisBitmapInfoHeader, LPBYTE lpThisBitmapPixelData)
{

	// grayScaleTheFrameData: Called by CTripodDlg::OnPortalNotificationBinaryview
	// Task: Read current frame pixel data and computes a grayscale version

	unsigned int	W, H;			  // Width and Height of current frame [pixels]
	BYTE            *sourceBmp;		  // Pointer to current frame of data
	unsigned int    row, col;
	unsigned long   i;
	BYTE			grayValue;

	BYTE			redValue;
	BYTE			greenValue;
	BYTE			blueValue;

    W = lpThisBitmapInfoHeader->biWidth;  // biWidth: number of columns
    H = lpThisBitmapInfoHeader->biHeight; // biHeight: number of rows

	// Store pixel data in row-column vector format
	// Recall that each pixel requires 3 bytes (red, blue and green bytes)
	// m_destinationBmp is a protected member and declared in binarizeDlg.h

	m_destinationBmp = (BYTE*)malloc(H*3*W*sizeof(BYTE));

	// Point to the current frame's pixel data
	sourceBmp = lpThisBitmapPixelData;

	for (row = 0; row < H; row++) {
		for (col = 0; col < W; col++) {

			// Recall each pixel is composed of 3 bytes
			i = (unsigned long)(row*3*W + 3*col);
        
			// The source pixel has a blue, green andred value:
			blueValue  = *(sourceBmp + i);
			greenValue = *(sourceBmp + i + 1);
			redValue   = *(sourceBmp + i + 2);

			// A standard equation for computing a grayscale value based on RGB values
			grayValue = (BYTE)(0.299*redValue + 0.587*greenValue + 0.114*blueValue);

			// The destination BMP will be a grayscale version of the source BMP
			*(m_destinationBmp + i)     = grayValue;
			*(m_destinationBmp + i + 1) = grayValue;
			*(m_destinationBmp + i + 2) = grayValue;
			
		}
	}
}


void CTripodDlg::doMyImageProcessing(LPBITMAPINFOHEADER lpThisBitmapInfoHeader)
{
	// doMyImageProcessing:  This is where you'd write your own image processing code
	// Task: Read a pixel's grayscale value and process accordingly

	unsigned int	W, H;			// Width and Height of current frame [pixels]
	unsigned int    row, col;		// Pixel's row and col positions
	unsigned long   i;				// Dummy variable for row-column vector
	int	    upperThreshold = 60;	// Gradient strength nessicary to start edge
	int		lowerThreshold = 30;	// Minimum gradient strength to continue edge
	unsigned long iOffset;			// Variable to offset row-column vector during sobel mask
	int rowOffset;					// Row offset from the current pixel
	int colOffset;					// Col offset from the current pixel
	int rowTotal = 0;				// Row position of offset pixel
	int colTotal = 0;				// Col position of offset pixel
	int Gx;							// Sum of Sobel mask products values in the x direction
	int Gy;							// Sum of Sobel mask products values in the y direction
	float thisAngle;				// Gradient direction based on Gx and Gy
	int newAngle;					// Approximation of the gradient direction
	bool edgeEnd;					// Stores whether or not the edge is at the edge of the possible image
	int GxMask[3][3];				// Sobel mask in the x direction
	int GyMask[3][3];				// Sobel mask in the y direction
	int newPixel;					// Sum pixel values for gaussian
	int gaussianMask[5][5];			// Gaussian mask

	W = lpThisBitmapInfoHeader->biWidth;  // biWidth: number of columns
    H = lpThisBitmapInfoHeader->biHeight; // biHeight: number of rows
	
	for (row = 0; row < H; row++) {
		for (col = 0; col < W; col++) {
			edgeDir[row][col] = 0;
		}
	}

	/* Declare Sobel masks */
	GxMask[0][0] = -1; GxMask[0][1] = 0; GxMask[0][2] = 1;
	GxMask[1][0] = -2; GxMask[1][1] = 0; GxMask[1][2] = 2;
	GxMask[2][0] = -1; GxMask[2][1] = 0; GxMask[2][2] = 1;
	
	GyMask[0][0] =  1; GyMask[0][1] =  2; GyMask[0][2] =  1;
	GyMask[1][0] =  0; GyMask[1][1] =  0; GyMask[1][2] =  0;
	GyMask[2][0] = -1; GyMask[2][1] = -2; GyMask[2][2] = -1;

	/* Declare Gaussian mask */
	gaussianMask[0][0] = 2;		gaussianMask[0][1] = 4;		gaussianMask[0][2] = 5;		gaussianMask[0][3] = 4;		gaussianMask[0][4] = 2;	
	gaussianMask[1][0] = 4;		gaussianMask[1][1] = 9;		gaussianMask[1][2] = 12;	gaussianMask[1][3] = 9;		gaussianMask[1][4] = 4;	
	gaussianMask[2][0] = 5;		gaussianMask[2][1] = 12;	gaussianMask[2][2] = 15;	gaussianMask[2][3] = 12;	gaussianMask[2][4] = 2;	
	gaussianMask[3][0] = 4;		gaussianMask[3][1] = 9;		gaussianMask[3][2] = 12;	gaussianMask[3][3] = 9;		gaussianMask[3][4] = 4;	
	gaussianMask[4][0] = 2;		gaussianMask[4][1] = 4;		gaussianMask[4][2] = 5;		gaussianMask[4][3] = 4;		gaussianMask[4][4] = 2;	
	

	/* Gaussian Blur */
	for (row = 2; row < H-2; row++) {
		for (col = 2; col < W-2; col++) {
			newPixel = 0;
			for (rowOffset=-2; rowOffset<=2; rowOffset++) {
				for (colOffset=-2; colOffset<=2; colOffset++) {
					rowTotal = row + rowOffset;
					colTotal = col + colOffset;
					iOffset = (unsigned long)(rowTotal*3*W + colTotal*3);
					newPixel += (*(m_destinationBmp + iOffset)) * gaussianMask[2 + rowOffset][2 + colOffset];
				}
			}
			i = (unsigned long)(row*3*W + col*3);
			*(m_destinationBmp + i) = newPixel / 159;
		}
	}

	/* Determine edge directions and gradient strengths */
	for (row = 1; row < H-1; row++) {
		for (col = 1; col < W-1; col++) {
			i = (unsigned long)(row*3*W + 3*col);
			Gx = 0;
			Gy = 0;
			/* Calculate the sum of the Sobel mask times the nine surrounding pixels in the x and y direction */
			for (rowOffset=-1; rowOffset<=1; rowOffset++) {
				for (colOffset=-1; colOffset<=1; colOffset++) {
					rowTotal = row + rowOffset;
					colTotal = col + colOffset;
					iOffset = (unsigned long)(rowTotal*3*W + colTotal*3);
					Gx = Gx + (*(m_destinationBmp + iOffset) * GxMask[rowOffset + 1][colOffset + 1]);
					Gy = Gy + (*(m_destinationBmp + iOffset) * GyMask[rowOffset + 1][colOffset + 1]);
				}
			}

			gradient[row][col] = sqrt(pow(Gx,2.0) + pow(Gy,2.0));	// Calculate gradient strength			
			thisAngle = (atan2(Gx,Gy)/3.14159) * 180.0;		// Calculate actual direction of edge
			
			/* Convert actual edge direction to approximate value */
			if ( ( (thisAngle < 22.5) && (thisAngle > -22.5) ) || (thisAngle > 157.5) || (thisAngle < -157.5) )
				newAngle = 0;
			if ( ( (thisAngle > 22.5) && (thisAngle < 67.5) ) || ( (thisAngle < -112.5) && (thisAngle > -157.5) ) )
				newAngle = 45;
			if ( ( (thisAngle > 67.5) && (thisAngle < 112.5) ) || ( (thisAngle < -67.5) && (thisAngle > -112.5) ) )
				newAngle = 90;
			if ( ( (thisAngle > 112.5) && (thisAngle < 157.5) ) || ( (thisAngle < -22.5) && (thisAngle > -67.5) ) )
				newAngle = 135;
				
			edgeDir[row][col] = newAngle;		// Store the approximate edge direction of each pixel in one array
		}
	}

	/* Trace along all the edges in the image */
	for (row = 1; row < H - 1; row++) {
		for (col = 1; col < W - 1; col++) {
			edgeEnd = false;
			if (gradient[row][col] > upperThreshold) {		// Check to see if current pixel has a high enough gradient strength to be part of an edge
				/* Switch based on current pixel's edge direction */
				switch (edgeDir[row][col]){		
					case 0:
						findEdge(0, 1, row, col, 0, lowerThreshold);
						break;
					case 45:
						findEdge(1, 1, row, col, 45, lowerThreshold);
						break;
					case 90:
						findEdge(1, 0, row, col, 90, lowerThreshold);
						break;
					case 135:
						findEdge(1, -1, row, col, 135, lowerThreshold);
						break;
					default :
						i = (unsigned long)(row*3*W + 3*col);
						*(m_destinationBmp + i) = 
						*(m_destinationBmp + i + 1) = 
						*(m_destinationBmp + i + 2) = 0;
						break;
					}
				}
			else {
				i = (unsigned long)(row*3*W + 3*col);
					*(m_destinationBmp + i) = 
					*(m_destinationBmp + i + 1) = 
					*(m_destinationBmp + i + 2) = 0;
			}	
		}
	}
	
	/* Suppress any pixels not changed by the edge tracing */
	for (row = 0; row < H; row++) {
		for (col = 0; col < W; col++) {	
			// Recall each pixel is composed of 3 bytes
			i = (unsigned long)(row*3*W + 3*col);
			// If a pixel's grayValue is not black or white make it black
			if( ((*(m_destinationBmp + i) != 255) && (*(m_destinationBmp + i) != 0)) || ((*(m_destinationBmp + i + 1) != 255) && (*(m_destinationBmp + i + 1) != 0)) || ((*(m_destinationBmp + i + 2) != 255) && (*(m_destinationBmp + i + 2) != 0)) ) 
				*(m_destinationBmp + i) = 
				*(m_destinationBmp + i + 1) = 
				*(m_destinationBmp + i + 2) = 0; // Make pixel black
		}
	}

	/* Non-maximum Suppression */
	for (row = 1; row < H - 1; row++) {
		for (col = 1; col < W - 1; col++) {
			i = (unsigned long)(row*3*W + 3*col);
			if (*(m_destinationBmp + i) == 255) {		// Check to see if current pixel is an edge
				/* Switch based on current pixel's edge direction */
				switch (edgeDir[row][col]) {		
					case 0:
						suppressNonMax( 1, 0, row, col, 0, lowerThreshold);
						break;
					case 45:
						suppressNonMax( 1, -1, row, col, 45, lowerThreshold);
						break;
					case 90:
						suppressNonMax( 0, 1, row, col, 90, lowerThreshold);
						break;
					case 135:
						suppressNonMax( 1, 1, row, col, 135, lowerThreshold);
						break;
					default :
						break;
				}
			}	
		}
	}
	
}

void CTripodDlg::findEdge(int rowShift, int colShift, int row, int col, int dir, int lowerThreshold)
{
	int W = 320;
	int H = 240;
	int newRow;
	int newCol;
	unsigned long i;
	bool edgeEnd = false;

	/* Find the row and column values for the next possible pixel on the edge */
	if (colShift < 0) {
		if (col > 0)
			newCol = col + colShift;
		else
			edgeEnd = true;
	} else if (col < W - 1) {
		newCol = col + colShift;
	} else
		edgeEnd = true;		// If the next pixel would be off image, don't do the while loop
	if (rowShift < 0) {
		if (row > 0)
			newRow = row + rowShift;
		else
			edgeEnd = true;
	} else if (row < H - 1) {
		newRow = row + rowShift;
	} else
		edgeEnd = true;	
		
	/* Determine edge directions and gradient strengths */
	while ( (edgeDir[newRow][newCol]==dir) && !edgeEnd && (gradient[newRow][newCol] > lowerThreshold) ) {
		/* Set the new pixel as white to show it is an edge */
		i = (unsigned long)(newRow*3*W + 3*newCol);
		*(m_destinationBmp + i) =
		*(m_destinationBmp + i + 1) =
		*(m_destinationBmp + i + 2) = 255;
		if (colShift < 0) {
			if (newCol > 0)
				newCol = newCol + colShift;
			else
				edgeEnd = true;	
		} else if (newCol < W - 1) {
			newCol = newCol + colShift;
		} else
			edgeEnd = true;	
		if (rowShift < 0) {
			if (newRow > 0)
				newRow = newRow + rowShift;
			else
				edgeEnd = true;
		} else if (newRow < H - 1) {
			newRow = newRow + rowShift;
		} else
			edgeEnd = true;	
	}	
}

void CTripodDlg::suppressNonMax(int rowShift, int colShift, int row, int col, int dir, int lowerThreshold)
{
	int W = 320;
	int H = 240;
	int newRow = 0;
	int newCol = 0;
	unsigned long i;
	bool edgeEnd = false;
	float nonMax[320][3];			// Temporarily stores gradients and positions of pixels in parallel edges
	int pixelCount = 0;					// Stores the number of pixels in parallel edges
	int count;						// A for loop counter
	int max[3];						// Maximum point in a wide edge
	
	if (colShift < 0) {
		if (col > 0)
			newCol = col + colShift;
		else
			edgeEnd = true;
	} else if (col < W - 1) {
		newCol = col + colShift;
	} else
		edgeEnd = true;		// If the next pixel would be off image, don't do the while loop
	if (rowShift < 0) {
		if (row > 0)
			newRow = row + rowShift;
		else
			edgeEnd = true;
	} else if (row < H - 1) {
		newRow = row + rowShift;
	} else
		edgeEnd = true;	
	i = (unsigned long)(newRow*3*W + 3*newCol);
	/* Find non-maximum parallel edges tracing up */
	while ((edgeDir[newRow][newCol] == dir) && !edgeEnd && (*(m_destinationBmp + i) == 255)) {
		if (colShift < 0) {
			if (newCol > 0)
				newCol = newCol + colShift;
			else
				edgeEnd = true;	
		} else if (newCol < W - 1) {
			newCol = newCol + colShift;
		} else
			edgeEnd = true;	
		if (rowShift < 0) {
			if (newRow > 0)
				newRow = newRow + rowShift;
			else
				edgeEnd = true;
		} else if (newRow < H - 1) {
			newRow = newRow + rowShift;
		} else
			edgeEnd = true;	
		nonMax[pixelCount][0] = newRow;
		nonMax[pixelCount][1] = newCol;
		nonMax[pixelCount][2] = gradient[newRow][newCol];
		pixelCount++;
		i = (unsigned long)(newRow*3*W + 3*newCol);
	}

	/* Find non-maximum parallel edges tracing down */
	edgeEnd = false;
	colShift *= -1;
	rowShift *= -1;
	if (colShift < 0) {
		if (col > 0)
			newCol = col + colShift;
		else
			edgeEnd = true;
	} else if (col < W - 1) {
		newCol = col + colShift;
	} else
		edgeEnd = true;	
	if (rowShift < 0) {
		if (row > 0)
			newRow = row + rowShift;
		else
			edgeEnd = true;
	} else if (row < H - 1) {
		newRow = row + rowShift;
	} else
		edgeEnd = true;	
	i = (unsigned long)(newRow*3*W + 3*newCol);
	while ((edgeDir[newRow][newCol] == dir) && !edgeEnd && (*(m_destinationBmp + i) == 255)) {
		if (colShift < 0) {
			if (newCol > 0)
				newCol = newCol + colShift;
			else
				edgeEnd = true;	
		} else if (newCol < W - 1) {
			newCol = newCol + colShift;
		} else
			edgeEnd = true;	
		if (rowShift < 0) {
			if (newRow > 0)
				newRow = newRow + rowShift;
			else
				edgeEnd = true;
		} else if (newRow < H - 1) {
			newRow = newRow + rowShift;
		} else
			edgeEnd = true;	
		nonMax[pixelCount][0] = newRow;
		nonMax[pixelCount][1] = newCol;
		nonMax[pixelCount][2] = gradient[newRow][newCol];
		pixelCount++;
		i = (unsigned long)(newRow*3*W + 3*newCol);
	}

	/* Suppress non-maximum edges */
	max[0] = 0;
	max[1] = 0;
	max[2] = 0;
	for (count = 0; count < pixelCount; count++) {
		if (nonMax[count][2] > max[2]) {
			max[0] = nonMax[count][0];
			max[1] = nonMax[count][1];
			max[2] = nonMax[count][2];
		}
	}
	for (count = 0; count < pixelCount; count++) {
		i = (unsigned long)(nonMax[count][0]*3*W + 3*nonMax[count][1]);
		*(m_destinationBmp + i) = 
		*(m_destinationBmp + i + 1) = 
		*(m_destinationBmp + i + 2) = 0;
	}
}

 

دانلود کد فوق از طریق لینک زیر:

Canny in C++ -No2

رمز فایل : behsan-andish.ir

الگوریتم Canny در سی پلاس پلاس قسمت ۱
الگوریتم Canny در سی پلاس پلاس قسمت ۲
الگوریتم Canny در سی پلاس پلاس قسمت ۳
الگوریتم Canny در سی پلاس پلاس قسمت ۴

♦ عامل های مبتنی بر هدف (goal-based agents)

داشتن اطلاعات در مورد حالت فعلی محیط، همیشه برای تصمیم گیری در مورد عملی که باید انجام گیرد، کافی نیست. به عنوان مثال، در جاده، تاکسی می تواند به چپ، راست یا مستقیم برود. تصمیم گیری درست، به مقصد تاکسی بستگی دارد. به عبارت دیگر، علاوه بر توصیف حالت فعلی، عامل به اطلاعات هدف نیاز دارد که موقعیت مطلوب را توصیف می کند. بعنوان مثال، می توان به مقصد مسافر اشاره کرد. “برنامه عامل” می تواند این اطلاعات را با اطلاعاتی دزبازه نتایج فعالیتهای ممکن ترکیب کندتا فعالیتی را برای رسیدن به هدف انتخاب نماید.

گاهی انتخاب فعالیت در عامل مبتنی بر هدف آسان است (وقتی که رضایت از هدف، بلافاصله از یک فعالیت به دست می آید). گاهی این انتخاب پیچیده خواهد بود (وقتی که عامل باید دنباله های طولانی را در نظر بگیرد تا راهی برای دستیابی به هدف پیدا کند). جست وجو و برنامه ریزی ، حوزه های فرعی AI هستند که دنباله ای از فعالیت ها را برای دستیابی عامل به هدف، پیدا می کنند.

توجه کنید که این نوع تصمیم گیری با “قوانین شرط فعالیت” که شرح آنها گذشت متفاوت است، به طوری که باید آینده را در نظر گرفت: “اگر چنین و چنان کنم، چه اتفاقی می افتد؟” ، “این مراحل مرا خوشحال می کند”. در طراحی های عامل واکنشی، این اطلاعات صریحا نمایش داده نمی شوند، زیرا قوانین داخلی، مستقیما از ادراکات به فعالیت ها نگاشت می شوند. عامل واکنشی، وقتی ترمز می کند که لامپ های ترمز را ببیند. در اصل عامل مبتنی بر هدف نتیجه می گیرد که اگر چراغ ترمز اتومبیل جلویی روشن شود، سرعت آن کاهش می یابد. با توجه به چگونگی تکامل جهان، تنها عملی که منجر به برخورد با اتومبیل دیگر نمیشود، ترمز کردن است.

گرچه عامل مبتنی ببر هدف کارایی چندانی ندارد، قابلیت انعطاف آن بیشتر است. زیرا دانشی که از تصمیمات آن پشتیبانی می کند، صریحا نمایش داده می شود و قابل اصلاح است. برای عامل واکنشی، باید بسیاری از “قوانین شرط فعالیت” را بازنویسی کنیم. رفتار عامل مبتنی بر هدف می تواند تغییر کند تا به هدف مورد نظر برسد.

♦ عامل های مبتنی بر سودمندی (utility-based agents)

در بسیاری از محیط ها، اهداف، برای تولید رفتاری با کیفیت بالا کافی نیستند. بعنوان مثال، چندین دنباله از فعالیت ها وجود دارند که تاکسی را به مقصد می رسانند، اما بعضی از آنها سریع تر، امن تر، مطمئن تر یا ارزانتر از دنباله های دیگر است. اهداف آنها، فقط ملاک ناپخته ای را بین وضعیت “رضایت” و “نارضایتی” ارائه میکنند، در حالیکه معیار کارایی عمومی باید مقایسه ای بین وضعیت های دنیای متفاوت (با دنباله حالات) را براساس چگونگی رضایت عامل، در صورت نائل شدن به هدف ارائه کند.

چون “رضایت” اساس علمی ندارد، دانشمندان کامپیوتر و اقتصاد از واژه ی “سود” یا “سودمندی” استفاده می کنند. “معیار کارایی” به هر دنباله از حالتهای محیط، امتیازی را نسبت می دهد، و به این ترتیب می تواند بین مسیرهای مطلوب تر و نامطلوب برای رسیدن به مقصد تاکسی، تمایز قائل شود. تابع سودمندی عامل، معیار کارایی را در داخل عامل تعیین می کند. اگر “تابع سودمندی داخلی” و “معیار کارایی خارجی” سازگار باشند، آنگاه عاملی که فعالیت هایی را برای ماکزیمم کردن سودمندی خود انتخاب می کند، خردمندانه عمل می کند.

این روش، تنها روش خردمند بودن نیست، اما همانند عامل های مبتنی بر هدف، عامل های مبتنی بر سودمندی از نظر قابلیت انعطاف و یادگیری، امتیازات زیادی دارند. علاوه بر این، در دو مورد اهداف چندان روشن نیستند، ولی عامل مبتنی بر سودمندی هنوز میتواند تصمیمات خردمندانه بگیرد.

اولا، وقتی اهداف با هم متضاد باشند فقط بعضی از آنها قابل دستیابی هستند، که در این مورد تابع سودمندی، توازن مناسبی را بین اهداف متضاد برقرار میکند. ثانیا، وقتی چندین هدف وجود دارند که عامل میتواندبرای دستیابی به آنها کمک کند،ولی هیچ کدام از آنها با اطمینان قابل دستیابی نباشند، تابع سودمندی میتواند احتمال موفقیت اهداف را بر حسب اهمیت آنها ، افزایش دهد.

خاصیت “پاره ای قابل مشاهده” و خاصیت اتفاقی، در سراسر دنیای واقعی وجود دارد. و در نتیجه، تصمیم گیری تحت شرایط عدم اطمینان انجام می شود. از نظر تکنیکی، عامل خردمند مبتنی بر سودمندی، فعالیتی را انتخاب میکند که سود مورد انتظار مربوط به نتایج آن فعالیت، ماکزیمم باشد. منظور از سود مورد انتظارف سودی است که عامل انتظار دارد بطور میانگین، با توجه به احتمالات و سود هر یک از نتایج، به دست آورد. عاملی که دارای یک “تابع سودمندی” صریح است، می تواند تصمیم خردمندانه اتخاذ کند. برای این تصمیم گیری ،از یک الگوریتم همه منظوره استفاده میکند که به تابع سودمندی خاصی بستگی ندارد.

ماهیت محیط های عامل های هوشمند

برای ساخت عاملهای خردمند، ابتدا باید راجع به محیط های کار فکر کنیم که “مسئله هایی” هستند که عاملهای هوشمند باید آنها را حل کنند. ابتدا چگونگی مشخص کردن محیط کار را بررسی میکنیم، سپس نشان خواهیم داد که محیط های کار، تنوع زیادی دارند. هر نوع محیط وظیفه، مستقیما، طراحی مناسب “برنامه ی عامل” را تحت تاثیر قرار میدهد.

تعیین کردن محیط کار

تعیین نوع عامل، معیار کارایی، محیط، حسگرها (سنسورها) و محرک ها را تحت عنوان محیط کار دسته بندی می کنیم. برای خلاصه ، این ها را به نام PEAS می خوانیم. اولین قدم در طراحی عامل، مشخص کردن محیط کار آن است. برای مثال، از مسئله ی “راننده تاکسی خودکار” (اتوماتیک) استفاده میکنیم. توجه کنید که تاکسی خودکار مورد بحث ما، خارج از قابلیت های فناوری فعلی است. وظیفه رانندگی، محدودیتی در ترکیب شرایط ندارد. هر یک از عناصر محیط کار را بیشتر مورد بحث قرار میدهیم.

معیار کارایی مربوط به راننده خودکار چییست؟ کیفیت های مطلوب عبارتنداز: رسیدن به مقصد درست، کم بودن مصرف سوخت و استهلاک، کم کردن زمان مسافرت و هزینه، کم کردن نقض قوانین ترافیک و اذیت کردن سایر رانندگان، حداکثر امنیت و راحتی مسافر، حداکثر سود. بدیهی است که بعضی از این اهداف متضاد هستند و باید متوازن شوند.

محیط تاکسی کجاست؟ هر راننده تاکسی باید با جاده ها سروکار داشته باشد، از جاده های یک طرفه تا بزرگ راه ها. جاده ها شامل ترافیک دیگری است، مثل عابرین پیاده، حیوانات، کارهای جاده ای، اتومبیل پلیس، چاله ها و دست اندازها. تاکسی باید با مسافران واقعی و بالقوه نیز سروکار داشته باشد. انتخاب های اختیاری نیز سر راه تاکسی وجود دارند. تاکسی ممکن است در سمت راست یا چپ حرکت کند، یا در جایی حرکت کند که برف عامل مهمی است. بدیهی است که هر چه محیط محدودتر باشد، مسئله طراحی آسانتر خواهد بود.

محرک هایی که برای راننده خودکار مهیا هستند، شامل آنهایی است که برای راننده انسانی فراهم است: کنترل موتور از طریق گاز، و کنترل مسیر و ترمز. علاوه براین باید با نمایش خروجی در نمایشگر یا دستگاه صوتی، با مسافران صحبت کند، با وسایل نقلیه دیگر ارتباط برقرار کند و غیره.

تاکسی برای رسیدن به هدف خود در محیط رانندگی، باید موقعیت و سرعت فعلی خود را بداند. لذا حسگرهای اصلی آن شامل یک یا چند دوربین تصویربرداری قابل کنترل، سرعت سنج و کیلومتر شمار است. برای کنترل مناسب تاکسی، به خصوص در سر پیچ ها، باید شتاب سنج داشته باشد. باید از وضعیت مکانیکی تاکسی خبر داشته باشد، لذا نیاز به حسگر های موتور، سوخت و سیستم الکتریکی است. باید ابزارهایی داشته باشد که در تاکسی معمولی وجود ندارد: سسیستم ماهواره تعیین موقعیت جهانی (GPS) که اطلاعات مربوط به موقعیت را به همراه یک نقشه در اختیار آن قرار می دهد، حسگرهای مادون قرمز یا سونار، تا فاصله آن را از سایر وسایل نقلیه مشخص کند. نیاز به صفحه کلید یا میکروفون دارد تا با مسافران ارتباط برقرار کند و مسافران مقصد خود را اعلان کنند.

عامل های نرم افزاری (یا روبات های نرم افزاری یا softbots ) در حوزه های وسیع و متعددی وجود دارند. یک روبات نرم افزاری را در نظر بگیرید که برای شبیه سازی پرواز هواپیمای بزرگ طراحی شده است. شبیه ساز شامل محیط پیچیده و با جزئیات زیاد است که حاوی هواپیما ها و عملیات زمینی است و عامل نرم افزاری باید فعالیت های متنوعی را در زمان بی درنگ انتخاب کند. برای این کار باید توانایی پردازش زبان طبیعی را داشته باشد، باید بیاموزد که هر مشتری به چه چیزی علاقمند است، و نقشه اش را بطور پویا (دینامیک) تغییر دهد. اینترنت محیطی است که پیچیدگی آن با دنیای فیزیکی برابری می کند و سکنه ی آن شامل عامل های مصنوعی متعددی هستند.

خواص محیط های کار (task environment)

بدیهی است که حدود محیط های کار AI بسیار گسترده است. می توانیم محیط های کار را به چند بعد تقسیم کنیم. این ابعاد، طراحی مناسب عامل و قابلیت اجرای هر خانواده از تکنیک ها را برای محیط عامل تعیین میکنند. این ابعاد عبارتنداز:

• “کاملا قابل مشاهده” در مقابل “پاره ای قابل مشاهده” (Fully observable vs. partially observable) :

اگر سنسور ها یا حسگرهای عامل، در هر زمان امکان دستیابی کامل به حالت محیط را فراهم کنند، می گوییم آن محیط کاملا قابل مشاهده است. محیط وظیفه، وقتی کاملا قابل مشاهده است که حسگرها تمام جنبه های مرتبط با فعالیت را تشخیص دهند. مرتبط بودن، به معیار کارایی بستگی دارد، محیط های کاملا قابل مشاهده، راحت هستند، زیرا لازم نیست عامل هیچ “حالت داخلی” را برای ردیابی دنیای خارج نگهداری کند. محیط ممکن است به دلیل وجود حسگرهای شلوغ و غیر دقیق ، از دست دادن بخشی از حالت توسط حسگر، کاملا قابل مشاهده نباشد.به عنوان مثال، تاکسی خودکار نمیتواند ببیند که رانندگان دیگر در حال فکر کردن هستند. اگر عامل فاقد سنسور باشد، آنگاه محیط آن غیر قابل مشاهده است. ممکن است تصور کنید که در اینگونه موارد، عامل نتواند به هدف خود برسد، اما اینطور نیست.

• تک عاملی در برابر چند عاملی (Single agent vs. multiagent) :

تمایز بین محیط های تک عاملی و چند عاملی، ساده به نظر می رسد. به عنوان مثال، عاملی که جدول کلمات متقاطع را به تنهایی حل می کند، بدیهی است که در محیط تک عاملی قرار دارد. در حالیکه عاملی که شطرنج بازی میکند در محیط دو عاملی قرار دارد. نکات ظریفی وجود دارد، که باید بررسی شود. اولا توضیح دادیم که چگونه یک موجودیت، به عنوان یک عامل در نظر گرفته می شود، ولی توضیح ندادیم که کدام موجودیت ها باید به عنوان عامل دیده شوند. آیا عامل A (مثل راننده تاکسی) باید با شی ء B (وسیله نقلیه دیگر) به عنوان یک عامل رفتار کند، یا میتواند با آن به عنوان شی ئی برخورد کند که براساس قوانین فیزیکی رفتار می کند، مثل موج ساحل یا حرکت برگها در اثر باد؟ نکته مهم این است که آیا بهتر است رفتار B به عنوان ماکزیمم کننده ی معیار کارایی توصیف شود که مقدار آن به رفتار عامل A بستگی دارد یا خیر. بعنوان مثال، در شطرنج، رقیب موجودیت B سعی میکندمعیار کارایی را به حداکثر برساند، و براساس قاعده شطرنج، معیار کارایی عامل A به حداقل برسد. لذا، شطرنج، یک محیط چند عاملی رقابتی است. از طرف دیگر، در محیط رانندگی تاکسی، اجتناب از تصادف ها، میزان کارایی تمام عامل ها را افزایش می دهد و در نتیجه ، این محیط یک محیط چندعاملی همیاری جزئی است. به این دلیل که، مثلا فقط یک اتومبیل می تواند فضای پارک را به خود اختصاص دهد. مشکلاتی که در طراحی عامل در محیط چند عاملی رخ میدهد، متفاوت از محیط تک عاملی است. به عنوان مثال، در محیط های چند عاملی، ارتباطات غالبا به عنوان رفتار عقلایی عامل ها ظاهر می شود. در بعضی از محیط های رقابتی، رفتار تصادفی، عقلایی است، زیرا مشکلات قابلیت پیش بینی را ندارند. 

• قطعی در مقابل اتفاقی (Deterministic vs. stochastic) :

اگر حالت بعدی محیط کاملا توسط حالت فعلی و عملی که عامل در حال انجام آن است، کاملا قابل تعیین باشد، می گوییم این محیط، قطعی است، وگرنه این محیط اتفاقی است. در اصل، عامل نباید در یک محیط قطعی و کاملا قابل مشاهده، نگران عدم اطمینان باشد. (در تعریف ما، عدم اطمینان ناشی از سایر عامل ها را در محیط چند عامل، نادیده می گیریم؛ بنابراین، در یک بازی حتی اگر هیچ عاملی نتواند فعالیت های عامل های دیگر را پیش بینی کند، این بازی میتواند قطعی باشد). اگر محیط پاره ای قابل مشاهده باشد، ممکن است اتفاقی به نظر برسد. بعضی از وضعیت های واقعی، آنقدر پیچیده هستند که نگهداری تمام جنبه های مشاهده نشده ی آن، غیر ممکن است؛ برای اهداف عملی، باید با آنها بصورت غیر قطعی یا اتفاقی رفتار کرد. اگر محیطی کاملا قابل مشاهده نباشد یا غیر قطعی باشد، می گوییم این محیط غیر قابل اعتماد یا نامطمئن است. منظور از واژه ی “غیر قطعی” این است که عدم اعتماد نسبت به نتایج، بر حسب احتمالات تعیین میشود؛ محیط غیر قطعی، محیطی است که در آن، فعالیت ها بر اساس نتایج ممکن مشخص می گردد، ولی هیچ احتمالی به آنها نسبت داده نمیشود. توصیف های محیط غیر قطعی، معمولا همراه با معیارهای کارایی است که برای موفقیت عامل در تمام نتایج ممکن از فعالیت های خود، ضروری است.

• مرحله ای در مقابل ترتیبی (Episodic vs. sequential) :

در یک محیط کار مرحله ای (تقسیم پذیر) ، تجربه ی عامل به چند بخش اتمیک و یکپارچه تقسیم می شود. در هر مرحله، عامل چیزی را درک میکند و یک عمل را بر اساس آن انجام می دهد. مرحله ی بعدی، به فعالیتهای انجام شده در مراحل قبل بستگی ندارد. بسیاری از وظایف طبقه بندی، مرحله ای هستند. برای مثال، عاملی که باید قطعات معیوب را در خط مونتاژ علامت گذاری کند، براساس قطعه ی فعلی تصمیم میگیرد، و این تصمیم گیری ربطی به تصمیم گیری های قبلی ندارد. علاوه براین،تصمیمی که بر روی قطعه یفعلی گرفته میشود، تاثیری در معیوب بودن قطعه ی بعدی ندارد. از طرف دیگر در محیط های ترتیبی یا پی در پی، تصمیم فعلی میتواند برر تمام تصمیمیات بعدی موثر باشد. شطرنج و رانندگی تاکسی، محیط های ترتیبی دارند: در هر دو مورد فعالیت های کوتاه مدت میتواند نتایج دراز مدتی داشته باشد. محیط های مرحله ای خیلی ساده تر از محیط های ترتیبی هستند، زیرا لازم نیست عامل درباره آینده فکرکند.

• ایستا در مقابل پویا (Static vs. dynamic) :

اگر محیط در طول عمر عامل تغییر کند، می گوییم آن محیط برای آن عامل پویا ، وگرنه ایستا است. کار کردن در محیط های ایستا ساده است، زیرا لازم نیست عامل در هنگام تصمیم گیری، دنیا را ببیند و لازم نیست نسبت به زمان گذشته نگران باشد. محیط های پویا بطور پیوسته از عامل سوال میکنند که چه کاری می خواهد انجام دهد. اگر هنوز تصمیم نگرفته باشد، معنایش این است که تصمیم گرفته است کاری انجام ندهد. اگر محیط با گذر زمان تغییر نکند، ولی امتیازات کارایی عامل تغییر کند، می گوییم محیط نیمه پویا است. رانندگی تاکسی پویا است. اتومبیل های دیگر و خود تاکسی در حال حرکت هستند، در حالیکه الگوریتم رانندگی باید برای مرحله بعدی تصمیم بگیرد. اگر در بازی شطرنج فقط زمان مطرح باشد، نیمه پویا است.

• گسسته در مقابل پیوسته (Discrete vs. continuous) :

تمایز بین وضعیت گسسته و پیوسته می تواند به حالت محیط، اداره کردن زمان، و به ادراکات و فعالیت های عامل اعمال شود. به عنوان مثال، محیط گسسته مثل بازی شطرنج دارای چند حالت مجزای متناهی است. شطرنج دارای مجموعه گسسته ای از ادراکات و فعالیت هاست. رانندگی تاکسی یک مسئله حالت پیوسته و زمان پیوسته است: سرعت و مکان تاکسی و سایر وسایل نقلیه. از طریق بازه ای از مقادیر پیوسته عبور می کند و این کار را بطور یکنواخت در طول زمان انجام می دهد.

• شناخته شده در مقابل ناشناخته (Known vs. unknown) :

به عبارت دقیق تر، این تمایز به خود محیط مربوط نمیشود، بلکه به حالت دانش عامل در مورد “قوانین فیزیکی” محیط مربوط می شود. در محیط شناخته شده، نتایج مربوط به تمام فعالیت ها داده می شود. روشن است اگر محیط ناشناخته باشد عامل باید یاد بگیرد که این محیط چگونه کار می کند، تا بتواند تصمیمات درستی اتخاذ کند. توجه کنید که تمایز بین محیط های شناخته شده و ناشناخته، مثل تمایز بین محیط های کاملا “قابل مشاهده” و “پاره ای قابل مشاهده” نیست. ممکن است یک محیط شناخته شده ، بطور پاره ای قابل مشاهده باشد. برعکس، محیط ناشناخته میتواند کاملا قابل مشاهده باشد.

عامل های هوشمند قسمت ۱
عامل های هوشمند قسمت ۲
عامل های هوشمند قسمت ۳
عامل های هوشمند قسمت ۴
عامل های هوشمند قسمت ۵

چرا دوربین‌ها ۲۹٫۹۷ فریم بر ثانیه فیلم‌برداری می‌کنند و نه ۳۰ فریم؟

چرا در جزییات فنی فیلم‌برداری در بخش فریم ریت به جای عدد ۳۰ فریم، عدد۲۹٫۹۷ فریم بر ثانیه فیلم‌برداری ذکر می‌شود؟ احتمالاً اگر در بررسی مشخصات ویدیویی خیلی از دوربین‌ها از دوربین‌های موبایل گرفته تا دوربین‌های فیلم‌برداری، نکته‌سنج بوده باشید این سؤال در ذهن شما هم شکل گرفته باشد. هر چند که می‌توان این مطلب را به صورت فنی تشریح کرد ولی در ادامه سعی شده است تا با بیانی ساده آن را موردبررسی قرار دهیم.در ابتدا بهتر است ، کمی راجع به فریم ریت توضیح بدهیم. فریم ریت یا در اصل همان فریم در ثانیه به نرخ تصویری اشاره دارد که به صورت متوالی و پشت سر هم توسط یک دستگاه تولید می‌شود.

واحد اندازه‌گیری فریم،FPS یا همان فریم در ثانیه است. برای همین وقتی در مشخصات فیلم‌برداری دوربین عدد ۲۹٫۹۷ درج می‌شود این عدد معادل تعداد فریم هایی است که آن دوربین در عرض یک ثانیه ثبت می‌کند. حتی در دوربین‌های پیشرفته‌تر که به ادعای شرکت سازنده می‌توانند تصاویر را با فریم ریت ۶۰ fps رکورد کنند در ۹۹ درصد مواقع در هر دو حالت DF و NDF به صورت دقیق با فریم ریت ۵۹.۹۴ فریم بر ثانیه تصاویر را ضبط می‌کند. با این تفاسیر چرا این عدد دقیقاً ۳۰ یا ۶۰ فریم در ثانیه نیست؟

مروری بر گذشته

در زمان معرفی اولین تلویزیون‌های سیاه و سفید NTSC فریم ریت دقیقاً معادل ۳۰ فریم در ثانیه بود؛ اما رد پای عدد عجیب ۲۹٫۹۷ و (بعدها ۵۹.۹۴) فریم در ثانیه برای اولین بار با معرفی تلویزیون‌های رنگی پیدا شد. در زمان تولید این تلویزیون‌ها، مهندسان سازنده باید اطلاعات رنگ را نیز به سیگنال‌های تلویزیونی اضافه می‌کردند؛ اما به خاطر محدودیت پهنای باند تصمیم گرفتند که تا حد ناچیزی از فریم ریت تلویزیون بکاهند تا اطلاعات رنگ نیز بدون اینکه سیگنال‌های تلویزیونی دچار معایبی شوند در آن گنجانده شود.

 

 

این تصمیم از این جهت گرفته شد که عملاً چاره دیگری نبود، از نظر فنی امکان افزایش پهنای باند وجود نداشت؛ و افزایش تفکیک‌پذیری (بالا بردن تعداد خط‌های افقی) بدون افزایش پهنای باند درنهایت باعث افت تفکیک‌پذیری و کاهش کیفیت تصویر می‌شد. برای همین ۲۹٫۹۷ فریم در ثانیه به فریم ریت استاندارد تلویزیون‌های رنگی NTSC تبدیل شد. دوربین‌های فیلم‌برداری امروزی هم به همان ترتیب به جای ۳۰ فریم در واقع قابلیت ثبت ۲۹٫۹۷ فریم در ثانیه را دارند. البته این تفاوت آن‌قدر ناچیز هست که در اصطلاح رایج به ذکر عدد ۳۰ و ۶۰ فریم در ثانیه اکتفا می‌شود.

 

 

از طرفی دیگر استاندارد تلویزیونی PAL کاملاً برای سازگاری با تلویزیون‌های رنگی در نظر گرفته شده است. در نتیجه بدون لطمه خوردن به تفکیک‌پذیری، از فریم ریتی مناسبی برخوردار است؛ بنابراین بستگی دارد که دوربین با چه استانداردی (PAL و NTSC) تصاویر را رکورد می‌کند.

 

منبع

یک مدل چرخه حیات تفصیلی

یکی دیگر از مدلهای چرخه حیات که در تعدادی از پروژه های سیستم خبره به طور موفقیت آمیز بکار گرفته شده مدل خطی است که در شکل ۷-۶ نشان داده شده و توسط بوچلر تدوین شده است (Bochsler 88). این چرخه حیات شامل چندین مرحله از برنامه ریزی تا ارزیابی سیستم است و نحوه ایجاد سیستم را بگونه ای تشریح می کند که تواناییهای عملکردی سیستم مورد ارزیابی قرار گیرند. سپس چرخه حیات همان مراحل برنامه ریزی تا ارزیابی سیستم را تکرار می کند تا وقتی که سیستم برای استفاده عادی تحویل شود. پس از آن چرخه حیات برای نگهداری و تکمیل سیستم مورد استفاده قرار می گیرد. اگرچه در شکل به صراحت نشان داده نشده ولی مراحل تصدیق و اعتبارسنجی به موازات سایر مراحل انجام می شود. برای حفظ کیفیت سیستم خبره به جای برطرف کردن اشکالات به محض بروز، آنها را در مراحل متوالی پیگیری می نمایند. پریدن از روی یک یا چند مرحله حتی برای برطرف کردن یک اشکال کوچک به کیفیت کل سیستم صدمه می زند.

این چرخه حیات را می توان به صورت یکی از حلقه های مدل مارپیچی در نظر گرفت. هر مرحله از چند وظیفه تشکیل شده است. توجه کنید که همه وظایف ممکن است برای یک مرحله ضروری باشند بخصوص زمانی که سیستم به سوی مراحل نگهداری و تکمیل پیش می رود. در عوض در کل چرخه حیات یعنی از پیدایش مفهوم اولیه تا مرگ سیستم، ترکیبی از همه وظایف را داریم. همچنین به جای برخی احتیاجات قطعی که برای تکمیل هر مرحله باید ارضاء شوند، برخی وظایف بسته به نوع کاربرد پیش می آیند و بنابراین آنها را فقط به عنوان راهنما باید در نظر گرفت.

مدل چرخه حیات به تفصیل مورد بحث قرار می گیرد تا عوامل متعدد و موثر در طراحی یک سیستم خبره بزرگ و با کیفیت را نشان دهد. برای نمونه های کوچک تحقیقاتی که کاربرد عمومی ندارد، همه وظایف یا حتی همه مراحل ضروری نیستند. هر چند تجربه نشان می دهند برخی از نرم افزارهای که با هدف کاربردهای شخصی یا تحقیقاتی طراحی شده اند به تدریج در بازار راه پیدا کرده و یک نرم افزار عمومی شده اند.

طراحی

هدف از مرحله طراحی، تهیه یک برنامه کاری رسمی برای ایجاد سیستم خبره است. برنامه کاری عبارت است از مجموعه ای از مستندات که برای راهنمایی و ارزشیابی ایجاد سیستم بکار می رود. جدول ۲-۶ وظایف این مرحله را نشان می دهد.

مهمترین وظیفه در چرخه حیات امکان سنجی پروژه است. این ارزیابی باید به سوالات مربوط به ارزشمند بودن پروژه جواب داده و همچنین مناسب بودن سیستم خبره را برای انجام کار مشخص کند. پاسخ این دو سوال تعیین می کند که پروژه با استفاده از روش سیستمهای خبره انجام خواهد شد یا خیر. در تشخیص امکان سنجی پروژه عوامل بسیاری در نظر گرفته می شوند. همان طور که در بخش ۱-۶ مطرح شد این عوامل شامل انتخاب دامنه مناسب برای سیستم خبره، هزینه، عایدی و موارد دیگر هستند.

جدول ۲-۶ وظایف مرحله طراحی

وظیفه هدف
امکان سنجی تعیین می شود که آیا ساخت سیستم با ارزش است یا نه و اگر جواب مثبت است آیا باید از تکنولوژی سیستم خبره استفاده شود.
مدیریت منابع تعیین منابع انسانی، زمان، پول، نرم افزار و سخت افزار مورد نیاز و اینکه چگونه باید منابع مورد نیاز را بدست آورد و مدیریت کرد.
ترتیب وظایف تعیین وظایف و ترتیب آنها در هر مرحله.
زمان بندی زمانهای شروع و تحویل وظایف در هر مرحله مشخص می شود.
چیدمان مقدماتی عملکردها تعیین اینکه با مشخص شدن عملکردهای سطح بالای سیستم، چگونه سیستم ساخته خواهد شد. این کار هدف سیستم را نیز مشخص می کند.
احتیاجات سطح بالا در مناسبات سطح بالا مشخص می شود که چگونه عملکردهای سیستم انجام خواهند شد.

تعریف دانش

هدف از مرحله تعریف دانش این است که احتیاجات سیستم خبره به دانش تعریف شوند. مرحله تعریف دانش شامل دو وظیفه اصلی به شرح زیر است:

شناسایی و انتخاب منابع دانش.

کسب دانش و تحلیل و استخراج آن

هر یک از این دو وظیفه اصلی از چند وظیفه دیگر تشکیل شده اند، جدول ۳-۶ وظایف مربوط به شناسایی و انتخاب منابع را شرح داده است.

وظیفه هدف
شناسائی منابع بدون در نظر گرفتن امکان دسترسی مشخص شود که چه منابعی از دانش وجود دارد.
اهمیت منابع فهرست اولویت بندی شده منابع دانش بر اساس اهمیتی که برای ایجاد سیستم دارند.
دسترسی به منبع فهرست منابع دانش که بر اساس میزان دسترسی مرتب شده است. کتابها و سایر مستندات معمولا بیش از افراد خبره در دسترس هستند.
انتخاب منبع انتخاب منبع دانش بر اساس میزان اهمیت و دسترسی.

وظایف مربوط به کسب دانش و تحلیل و استخراج آن در جدول ۴-۶ تشریح شده اند.

هدف اصلی از وظیفه اکتساب دانش، وظیفه تحلیل دانش و وظیفه استخراج دانش، در واقع تولید و تصدیق دانش مورد نیاز سیستم است. هر بار که سطح دانش موجود ثبت شود باید دانش مورد تصحیح قرار گیرد و برای مرحله بعدی طراحی دانش آماده شود. علاوه بر روش متداول مصاحبه با افراد خبره، ممکن است از سایر روشها نظیر شبکه های مجموعه های اطلاعاتی و یا تئوری ساخت شخصی برای اجرای کسب دانش خودکار استفاده شود.

جدول ۴-۶ وظایف مربوط به کسب دانش و تحلیل و استخراج آن

وظیفه هدف
استراتژی کسب دانش مشخص می کند که چگونه به کمک مصاحبه با فرد خبره، خواندن مستندات، استقراء، قاعده، شبکه های مجموعه های اطلاعاتی و غیره می توان به کسب دانش پرداخت.
تعیین اجزای دانش بدست آوردن دانش مورد نظر از منابعی که در این دوره از چرخه حیات مفید بوده اند.
سیستم طبقه بندی دانش طبقه بندی و سازمان دهی دانش برای کمک به فرد مجری سیستم جهت تصدیق و درک دانش. در صورت امکان از گروههای سلسله مراتبی استفاده شود.
طرح تفصیلی عملکردها قابلیتهای عملکردی سیستم به تفصیل مشخص می شود. این سطح از کار به مراتب فنی تر است در حالیکه طرح عملکردی اولیه در سطح مدیریت قرار داشته است.
جریان کنترل اولیه مراحل عمومی اجرای سیستم خبره را شرح می دهد. این فازها مربوط به گروههایی منطقی از قواعد هستند که در قالب گروههایی فعال یا غیر فعال می شوند تا جریان اجرای سیستم کنترل شود.
دستورالعمل اولیه کاربر سیستم را از دیدگاه کاربر شرح می دهد. (کاری که اغلب فراموش می شود ولی از جمله کارهای اساسی سیستم است) بسیار ضروری است که در جریان ساخت سیستم هرچه زودتر از کاربران بازخوری دریافت شود. اگر آنها از سیستم استفاده نکنند آن سیستم ارزشی ندارد.
مشخصات احتیاجات تعریف دقیق هدف سیستم، سیستم خبره با استفاده از این احتیاجات مورد تایید قرار خواهد گرفت.
بستر دانش سطح دانش برای سیستم تعریف می شود. حال هر تغییری باید با درخواست رسمی انجام شود. در حال حاضر دانش سطح بالا برای مرحله بعدی طراحی دانش کافی و مناسب است.

طراحی دانش

هدف از مرحله طراحی دانش ایجاد یک نوع طرح تفصیلی برای سیستم خبره است. این مرحله شامل دو وظیفه اصلی است:

تعریف دانش

طرح تفصیلی

جدول ۵-۶ وظایف مربوط به تعریف دانش را تشریح کرده است.

درباره ساختار داخلی وقایع که در جدول ۵-۶ مطرح شده مراجعه به متون مربوط به نرم افزار CLIPS ضروری است. ایده اصلی تعیین ساختار وقایع، انطباق با سبک مناسب است. به عنوان مثال یک واقعیت مثل «۱۰» به تنهایی چندان معنی دار نیست. «۱۰» به تنهایی چه چیز را نشان می دهد؟ اگر اطلاعات بیشتری همراه این واقعیت باشد مثلا «قیمت ۱۰» و یا جمله کاملتر باشد مثل «قیمت طلا ۱۰» در آن صورت معنی دار خواهد بود. توجه کنید که این نحوه بیان «واقعیت» به صورت سه تایی شیء – مشخصه – ارزش متداول بوده، و بنابراین خواندن و درک آن برای مردم آسان است. CLIPS از چنین ساختاری برای قواعد و همچنین اشیاء پشتیبانی می کند.

جدول ۵-۶ وظایف تعریف دانش

وظیفه هدف
نمایش دانش مشخص می کند که دانش چگونه در قالب قواعد، چارچوبها و یا منطق نشان داده می شود و این بستگی به نوع ابزار سیستم خبره دارد که از سیستم پشتیبانی می کند.
ساختار کنترلی تفصیلی سه ساختار کنترلی عمومی را مشخص می کند (۱) اگر سیستم در کدهای رویه ای احاطه شده چگونه می توان آنرا فرخوانی کرد (۲) کنترل گروههایی از قواعد مرتبط در داخل یک سیستم اجرائی (۳) ساختارهای کنترلی فراسطحی برای قواعد.
ساختار واقعیتهای داخلی ساختار درونی وقایع را به یک روش منطقی برای کمک به درک آنها و ایجاد یک سبک مناسب مشخص می کند.
ارتباط مقدماتی با کاربر نحوه ارتباط اولیه با کاربر را تعیین می کند. از کاربران درباره نحوه ارتباط بازخورهایی گرفته می شود.
برنامه آزمون اولیه مشخص می کند که چگونه کدها مورد آزمایش قرار می گیرند. داده های آزمون، برگزارکنندگان آزمون و چگونگی تحلیل نتایج تعریف می شوند.

در برخی از زبانهای سیستم خبره ممکن است مقادیر مورد قبول فیلدها، انواع محدودی داشته باشند به طوری که فقط مقادیر خاصی را قبول کنند. اگر در قاعده ای از مقادیر غیر مجاز استفاده شود موتور استنتاج پیغام خطا خواهد بود. مرحله طراحی تفصیلی دانش در جدول ۶-۶ نشان داده شده است.

جدول ۶-۶ وظایف طراحی تفصیلی دانش

وظیفه هدف
ساختار طراحی مشخص می کند که چگونه دانش به صورتی منطقی در پایگاه دانش سازمان دهی می شود و در پایگاه دانش چه چیزی وجود دارد.
استراتژی اجرا مشخص می کند که چگونه سیستم اجرا می شود.
جزئیات ارتباط با کاربر پس از دریافت بازخور از کاربر در مرحله ارتباط مقدماتی با کاربر جزئیات ارتباط با کاربر مشخص می شود.
مشخصات طراحی و گزارش دهی مستند کردن طراحی
برنامه آزمون تفصیلی مشخص می کند که چگونه کدها به دقت مورد آزمون و بررسی قرار می گیرند.

محصول مرحله طراحی تفصیلی، مستندات پایه طراحی است که از طریق آن کدنویسی انجام می شود. مستندات پایه ای قبل از کدنویسی باید مورد بازنگری قرار گیرد.

جدول ۷-۶ وظایف کدنویسی و آزمون

وظیفه هدف
کد نویسی اجرای برنامه نویسی
آزمونها آزمون برنامه ها با استفاده از داده های آزمون، مجریان آزمون و رویه های تحلیل آزمون
فهرست منابع تولید کد منابع به طور مستند و واضح
راهنمای کاربر ایجاد یک راهنمای کاری برای کاربر به گونه ای که کاربر و فرد خبره بتوانند به سیستم بازخور ارائه دهند.
راهنمای نصب سیستم و بکارگیری آن مستندسازی نصب سیستم و بکارگیری آن برای کاربران
مستندات تشریح سیستم مستندات کلی سیستم برای عملیات، محدویتها و مسائل

این مرحله با بازنگری آمادگی آزمون به اتمام می رسد که بدین صورت مشخص می شود آیا سیستم خبره برای مرحله بعدی یعنی بررسی دانش آماده است یا خیر.

تصدیق بر دانش

هدف از مرحله تصدیق دانش، تعیین درستی، کامل بودن و سازگاری سیستم است. این مرحله به دو وظیفه اصلی تقسیم می شود.

آزمونهای رسمی

تحلیل آزمون

جدول ۸-۶ وظایف مربوط به آزمون رسمی را در مرحله تصدیق دانش تشریح می کند.

جدول ۸-۶ وظایف آزمون رسمی در مرحله بررسی دانش

وظیفه هدف
رویه های آزمون رویه های آزمون رسمی را اجرا می کند.
گزارشهای آزمون نتایج آزمون را مستند می کند.

جدول ۹-۶ وظایف تحلیل آزمون را نشان می دهد.

جدول ۹-۶ وظایف تحلیل آزمون

وظیفه هدف
ارزیابی نتایج نتایج آزمونها را تجزیه و تحلیل می نماید.
پیشنهادها پیشنهادها و نتایج آزمونها را مستند می کند.

در مرحله تحلیل آزمون مشکلات عمده زیر پیگیری می شود.

پاسخهای نادرس

پاسخهای ناقص

پاسخهای غیر منطقی و ناسازگار

و تعیین می شود که آیا مشکلات مربوط به قواعد، زنجیره های استنتاج، یا عدم قطعیت و یا ترکیبی از این سه عامل است. اگر مشکلات موجود مربوط به سیستم خبره نباشد آنگاه تجزیه و تحلیل نرم افزار ابزار سیستم خبره برای یافتن اشکالات ضروری است.

ارزیابی سیستم

همان طور که در جدول۱۰-۶ تشریح شده، مرحله نهایی ایجاد سیستم در چرخه حیات، مرحله ارزیابی سیستم است. هدف این مرحله جمع بندی آموخته ها و پیشنهادات برای بهبود و تصحیح عملکرد سیستم است.

جدول ۱۰-۶ وظایف مرحله ارزیابی سیستم

وظیفه هدف
ارزیابی نتایج نتایج آزمونها و تصدیق جمع بندی می شود.
پیشنهادها هرگونه تغییری در سیستم را پیشنهاد می کند.
اعتبارسنجی اگر سیستم با توجه به نیازهای کاربر و احتیاجات درست عمل می کند معتبر خواهد بود.
گزارش بین کار یا نهایی اگر سیستم تکمیل شده باشد گزارش نهایی منتشر می شود در غیر این صورت یک گزارش بین کار منتشر خواهد شد.

از آنجا که یک سیستم خبره معمولا طی چند تکرار از چرخه حیات ساخته می شود، گزارش مرحله ارزیابی سیستم معمولا یک گزارش میان مرحله ای است که هر بار دانش جدیدی به سیستم اضافه شود پیشرفت عملکرد سیستم را تشریح می کند. ولی توانایی یک بخش جدید در سیستم باید توسط خود آن بخش و همچنین به عنوان قسمتی از دانش قبلی تصدیق شود. یعنی تصدیق سیستم باید با توجه به همه دانش سیستم و نه فقط دانش جدید صورت بگیرد. سیستم خبره همچنین باید در هر مرحله مورد اعتبارسنجی قرار گیرد نه اینکه فقط در تکرار نهایی چرخه حیات اینکار صورت پذیرد. لازم به تذکر است که تحقیقاتی نیز بر روی سیستمهایی که پایگاه دانش آنها به طور خودکار مورد اعتبارسنجی قرار می گیرد صورت گرفته است (Stachowitz 87).

خلاصه

در این فصل ما یک روش مهندسی نرم افزار را برای ساخت سیستمهای خبره مطرح کردیم. حال که از تکنولوژی سیستمهای خبره برای حل مسائل دنیای واقعی استفاده می شود، سیستمهای خبره باید از کیفیت مناسبی برخوردار باشند. عوامل متعددی باید در طراحی یک سیستم خبره در نظر گرفته شود که انتخاب مسئله، هزینه و عایدی از آن جمله اند. برای ساخت یک سیستم موفق باید جنبه های مدیریتی و فنی مورد نظر قرار گیرند.

یکی از مفاهیم بسیار مفید مهندسی نرم افزار، چرخه حیات است. مفهوم چرخه حیات، فرآیند ایجاد نرم افزار را به صورت یک سری مراحل در نظر می گیرد که از مفهوم اولیه شروع شده و به مرگ نرم افزار ختم می شود. با اجرای پیوسته یک چرخه حیات می توان نرم افزاری با کیفیت بالا ایجاد نمود. چندین مدل مختلف از چرخه های حیات برای سیستمهای خبره مطرح شد و یکی از آنها به تفصیل مورد بحث قرار گرفت.


منابع

  1. fa.wikipedia.org
  2. http://itresearches.ir
  3. www.ihoosh.ir
  4. http://zagra.co

 

سیستم خبره قسمت ۱
سیستم خبره قسمت ۲
سیستم خبره قسمت ۳
سیستم خبره قسمت ۴
سیستم خبره قسمت ۵
سیستم خبره قسمت ۶

مقدمه ای بر سیستمهای خبره

سیستم خبره چیست؟

مقدمه ی آموزش سیستم های خبره و هوش مصنوعی
اولین قدم در حل هر مسئله ای تعریف دامنه یا محدوده آن است.  این نکته همانطور که در مورد روشهای برنامه نویسی متعارف صحت دارد، در مورد هوش مصنوعی نیز درست است. اما به خاطر اسراری که از قبل در مورد هوش مصنوعی ( AI ) وجود داشته، هنوز هم برخی مایلند این عقیده قدیمی را باور کنند که ” هر مسئله ای که تا به حال حل نشده باشد یک مسئله هوش  مصنوعی  است”. تعریف متداول دیگری به این صورت وجود دارد ” هوش مصنوعی کامپیوترها را قادر می سازد که کارهایی شبیه به آنچه در فیلمها دیده می شود انجام دهند”.چنین تفکراتی در دهه ۱۹۷۰ میلادی رواج داشت، یعنی درست زمانی که هوش مصنوعی در مرحله تحقیق بود ولی امروزه مسائل واقعی بسیاری وجود دارند که توسط هوش مصنوعی و کاربردهای تجاری آن قابل حلند.

اگرچه برای مسائل کلاسیک هوش مصنوعی از جمله ترجمه زبانهای طبیعی، فهم کلام و بینایی هنوز راه حل عمومی یافت نشده است، ولی محدود کردن دامنه مسئله می تواند به راه حل  مفیدی منجر شود. به عنوان مثال، ایجاد یک « سیستم زبان طبیعی ساده » که ورودی آن جملاتی با ساختار اسم، فعل و مفعول باشد کار مشکلی نیست. در حال حاضر، چنین سیستمهایی به عنوان یک واسط در ایجاد ارتباط کاربر پسند با نرم افزارهای بانک اطلاعاتی و صفحه گسترده ها به خوبی عمل  می کنند. در حقیقت (پاره) جملاتی که امروزه در برنامه های کامپیوتری مخصوص بازی و سرگرمی به کار می روند توان بالای کامپیوتر در فهم زبان طبیعی را به نمایش می گذارند.

هوش مصنوعی شامل چندین زیر مجموعه است. زیر مجموعه سیستمهای خبره یکی از موفق ترین راه حلهای تقریبی برای مسائل کلاسیک هوش مصنوعی است. پروفسور فیگن بام از دانشگاه استانفورد یکی از پیشکسوتان تکنولوژی سیستم های خبره، تعریفی در مورد سیستمهای خبره دارد : « … یک برنامه کامپیوتری هوشمند که از دانش و روشهای استنتاج برای حل مسائلی استفاده می کند که به دلیل مشکل بودن، نیاز به تجربه و مهارت انسان » (Feigenbaum 82 ). بنابراین سیستم خبره یک سیستم کامپیوتری است که از قابلیت تصمیم گیری افراد خبره، تقلید می نماید. لغت تقلید به این معناست که سیستم خبره سعی دارد در تمام جنبه ها شبیه فرد خبره عمل  کند. عمل تقلید از شبیه سازی قوی تر است چون در شبیه سازی تنها در بعضی موارد شبیه چیزهای واقعی عمل می شود.

اگرچه هنوز یک برنامه چند منظوره برای حل مسائل ایجاد نشده است، ولی سیستمهای خبره در محدوده های خاص به خوبی عمل می کنند. برای اثبات موفقیت سیستمهای خبره فقط کافی است که کاربردهای متعدد سیستمهای خبره را در تجارت، پزشکی، علوم مهندسی ملاحظه نمود و یا کتابها، مجلات، سمینارها و محصولات نرم افزاری اختصاص یافته به سیستمهای  خبره را مشاهده کرد.

سیستمهای خبره یکی از شاخه های هوش مصنوعی است که همچون یک فرد خبره با استفاده وسیع از دانش تخصصی به حل مسائل می پردازد. فرد خبره کسی است که در یک زمینه خاص دارای تجربه و مهارت و در یک کلامخبرگی است. بنابراین فرد خبره دارای دانش یا مهارت خاصی است که برای بیشتر مردم ناشناخته و یا غیر قابل دسترسی است. فرد خبره مسایلی را حل می کند که یا توسط دیگران قابل حل نیست و یا او مؤثرترین ( و البته نه ارزانترین) راه حل را برای آن مسئله ارائه می دهد. وقتی سیستمهای خبره اولین بار در دهه ۱۹۷۰ توسعه یافتند، فقط دارای دانش خبرگی بودند. ولی لغت سیستم خبره امروزه اغلب به هر سیستمی اطلاق می شود که از تکنولوژی سیستم خبره استفاده می کند. این تکنولوژی می تواند شامل زبانهای خاص سیستمهای خبره، برنامه ها و سخت افزارهای طراحی شده برای کمک به توسعه و اجرای سیستمهای خبره باشد.

دانش موجود در سیستمهای خبره می تواند شامل تجربه و یا دانشی باشد که از طریق کتب، مجلات و افراد دانشمند قابل دسترسی است. اصطلاحات سیستم خبره، سیستم مبتنی بر دانش و یا سیستم خبره مبتنی بر دانش، به طور مترادف به کار می روند. بیشتر مردم از اصطلاح سیستم خبره به دلیل کوتاه بودنش استفاده می کنند. این در حالی است که ممکن است حتی در آن سیستم خبره هیچ تجربه و مهارتی وجود نداشته و فقط شامل دانش عمومی باشد.

شکل ۲-۱ مفهوم بنیانی یک سیستم خبره مبتنی بر دانش را نشان می دهد. کاربر حقایق (یا وقایع) و یا سایر اطلاعات را به سیستم خبره داده و در پاسخ، تجربه، تخصص و توصیه های عالمانه و در یک کلام خبرگی دریافت می کند. از نظر ساختار داخلی، سیستم خبره از دو بخش اصلی تشکیل می شود. بخش اول پایگاه دانش است. این پایگاه حاوی دانشی است که بخش دوم یعنی موتور استنتاج به کمک آن نتیجه گیری می کند. این نتایج، پاسخ سیستم خبره به سوالات کاربر می باشد.

سیستمهای مبتنی بر دانش کارا طوری طراحی شده اند که بتواند به عنوان یک دستیار هوشمند برای افراد خبره عمل کنند. این دستیاران هوشمند به وسیله تکنولوژی سیستمهای خبره طراحی شده اند و دلیل این کار، امکان بسط دانش آنها در آینده می باشد. هر چه دانش بیشتری به یک سیستم دستیار هوشمند اضافه شود، بیشتر شبیه به یک فرد خبره عمل می کند. توسعه یک سیستم دستیار هوشمند می تواند مرحله مهمی در ایجاد یک سیستم خبره کامل باشد. بعلاوه یک دستیار هوشمند می تواند با سرعت بخشیدن به حل مسئله، وقت فرد خبره را آزاد کند. معلمین هوشمند یکی دیگر از کاربردهای هوش مصنوعی هستند. بر خلاف سیستمهای قدیمی آموزش به کمک کامپیوتر، سیستمهای جدید می توانند بسته به زمینه و مفهوم، آموزش یا راهنمایی ارائه دهند (Giarratano 91a).

بر خلاف دانش مربوط به تکنیکهای حل مسایل عمومی، دانش یک فرد خبره حوزه مند است یعنی محدود به یک دامنه خاص است. دامنه یک مسئله، نشاندهنده حوزه خاصی همچون حوزه پزشکی، مالی، علوم و یا مهندسی است که یک فرد خبره می تواند مسایل آن را به خوبی حل کند. سیستمهای خبره طوری طراحی شده اند که مثل افراد خبره در یک حوزه خاص، مهارت داشته باشند. به عنوان مثال شما معمولا انتظار ندارید که یک متخصص شطرنج، در زمینه مسایل پزشکی نیز دانش تخصصی داشته باشد. تخصص داشتن در یک حوزه خاص، به خودی خود، منجر به تخصص داشتن در حوزه های دیگر نمی شود.

دانش یک فرد خبر درباره حل یک مساله خاص، حوزه دانش فرد خبره نامیده می شود.

طراحی سیستمهای خبره

انتخاب مسئله مناسب

قبل از اینکه شما یک سیستم خبره بسازید باید یک مسئله مناسب انتخاب کنید. مانند هر پروژه نرم افزاری، قبل از اینکه خود را درگیر تعهدات زیادی نسبت به افراد، منابع و زمان برای یک سیستم خبره پیشنهادی نماییم، باید بعضی ملاحظات کلی را در نظر داشته باشیم. هر چند این ملاحظات کلی در مدیریت پروژه هر برنامه معمولی نیز وجود دارد ولی باید به منظور پاسخگویی به نیازهای خاص سیستمهای خبره، آنها را اختصاصی کرد. نوعی نگرش اجمالی و از  بالا به مدیریت ایجاد سیستم خبره در شکل ۶-۱ نشان داده شده است. سه مرحله کلی که در شکل ۱-۶ نشان داده شده دارای ملاحظات تخصصی تری هستند که در بخش ۳-۶ بحث شده است. همچنین برخی ملاحظات تخصصی تر به صورت پرسش و پاسخ مطرح خواهند گردید تا به صورت یک مجموعه راهنماییها برای پروژه های سیستمهای خبره در آیند.

انتخاب الگوی مناسب

چرا ما یک سیستم خبره می سازیم؟

عواید سیستم

سیستم خبره چه عوایدی دارد؟

این سوال با سوال اول در ارتباط است. ولی از آنجا که این سوال به دنبال دانستن میزان بازگشت سرمایه بوده یعنی با لزوم بازگشت مخصوص سرمایه افراد، منابع، زمان و پول مورد نیاز در ارتباط است از سوال اولی عملی تر است. عواید سیستم ممکن است به صورت پول، افزایش کارایی و یا هر یک از مزایای سیستمهای خبره باشد همچنین یادآوری این نکته لازم است که اگر کسی از سیستم استفاده نکند آن سیستم هیچ عایدی نداشته است. از آنجا که سیستم خبره یک فن آوری نوین است پاسخ دادن به این سؤال در مقایسه با برنامه کامپیوتری معمولی بسیار دشوارتر و پر مخاطره تر است.

ابزارها

چه ابزارهایی برای ساخت سیستم در دسترس داریم؟

امروزه تعداد زیادی ابزار سیستم ذخیره در دسترس وجود دارد که هر یک مزایا و معایبی دارند. به دلیل توسعه سریع ابزارهای نرم افزاری معرفی یک لیست بهنگام از ابزارها کار دشواری است. به راحتی می توان دید که ابزارهای موجود هر ساله ارتقاء یافته و بعضا در طول دو تا سه سال کاملا بازنگری می شوند.

این ارتقا، فقط به ابزارهای نرم افزاری محدود نمی شود. بسیاری از ابزارهای دارای جدیدترین فن آوریها که در اواسط دهه ۱۹۸۰ فقط بر روی ماشینهای لیسپ ۰۰۰/۵۰ دلاری کار می کرد بعدها برای اجرا بر روی ریز کامپیوترها و ریزپردازنده های سفارشی بازنویسی گردید. این موضوع باعث شد قیمت سخت افزارهای بکار گیرنده این ابزارها بسیار کاهش یابد. بهترین راهنمایی برای انتخاب ابزار، بررسی مقالات روز و گفتگو با سازندگان سیستمهای خبره است.

هزینه

این کار چه میزان هزینه در برخواهد داشت؟

هزینه ساخت یک سیستم خبره بستگی به افراد، منابع و زمان تخصیص یافته برای ساخت آن دارد. علاوه بر سخت افزار و نرم افزار لازم برای اجرای یک ابزار سیستم خبره، ممکن است هزینه قابل توجهی نیز صرف آموزش آن شود. اگر پرسنل شما در خصوص کار با یک ابزار، کم تجربه یا بی تجربه باشند، آموزش آنها پر هزینه خواهد بود. به عنوان مثال آموزش یک ابزار سیستم خبره که دربردارنده آخرین تکنولوژی است ممکن است ۲۵۰۰ دلار در هفته برای هر نفر هزینه در بر داشته باشد.

سیستم خبره قسمت ۱
سیستم خبره قسمت ۲
سیستم خبره قسمت ۳
سیستم خبره قسمت ۴
سیستم خبره قسمت ۵
سیستم خبره قسمت ۶

مدل سیستم خبره

یک مدل سیستم خبره مشتمل بر چهار بخش اصلی است:

پایگاه دانش (Knowledge Base)

    1. موتور استنتاج (Inference Engine)
    2. امکانات توضیح (Explanation Facilities)
    3. رابط کاربر (User Interface)

پایگاه دانش (Knowledge Base)

محلی است که دانش خبره به صورت کدگذاری شده و قابل فهم برای سیستم ذخیره می‌شود. با این توصیف دو اصطلاح زیر تعریف می‌شود:

— شیء (Object): منظور از شیء در اینجا نتیجه‌ای است که با توجه به قوانین مربوط به آن تعریف می‌گردد.
— شاخص (Attribute): منظور از شاخص یا «صفت» یک کیفیت ویژه است که با توجه به قوانینی که برای آن در نظر گرفته شده است به شما در تعریف شیء یاری می‌دهد.

بنابراین می‌توان پایگاه دانش را به صورت لیستی از اشیاء که در آن قوانین و شاخص‌های مربوط به هر شیء نیز ذکر شده است در نظر گرفته شود.
در ساده‌ترین حالت (که در اکثر کاربردها نیز همین حالت بکار می‌رود) قانونی که به یک شاخص اعمال می‌شود این مطلب را بیان می‌کند که آیا شیء مورد نظر شاخص دارد یا ندارد؟
یک سیستم متخصص که انواع مختلف میوه را شناسایی می‌کند احتمالاً دارای بانک اطلاعاتی به صورت زیر خواهد بود:

شیء قانون شاخص
سیب دارد روی درخت رشد می‌کند.
دارد گرد است
دارد رنگ قرمز یا زرد است
ندارد در کویر رشد می‌کند

بانک ساده شده بالا، تنها با استفاده از قانون <<دارد>>:

شیء شاخص‌هایی که دارد
سیب رشد روی درخت
سیب گرد بودن
سیب رنگ قرمز یا زرد
سیب رشد نکردن در کویر

به کسی که دانش خبره را به صورت کدگذاری شده درمی‌آورد، مهندس دانش گفته می‌شود. به طور کلی دانش به صورت عبارات شرطی و قواعد در پایگاه دانش ذخیره می‌گردد.

فریمها(Minsky(1975، و پس از آن هستان شناسی‌ها از روشهای مدرن جهت ارائه دانش در سیستم‌های خبره‌اند.

موتور استنتاج (Inference Engine)

حتی زمانی که قلمرو دانش را با قوانین نمایش می‌دهیم، باز هم یک فرد خبره باید مشخص کند که کدام قوانین را برای حل مسئله خاصی به کار می‌برد. علاوه بر این باید مشخص کند که این قوانین را در چه رده‌ای به کار می‌برد. به طور مشابه یک سیستم خبره نیاز خواهد داشت تا تصمیم بگیرد که چه قانونی و در چه مورد و رده‌ای باید برای ارزیابی انتخاب شود.

دستگاه استنتاج در واقع قلب یک سیستم خبره است. یک نظام پیچیده که قواعد استنتاج را که به صورت مجموعه‌ای از قواعد “اگر … پس …” برای یافتن پاسخ یا قضاوت نهایی به کار می‌گیرد چیزی که سیستم خبره را سیستم خبره می‌کند روشی است که این قواعد براساس آن مورد پردازش قرار می‌گیرند. دستگاه استنتاج برای رسیدن به قضاوت می‌تواند به دو صورت عمل کند و در واقع ازسلسله مراتب قواعد استدلال به دو طریق عبور کند یکی از دو شیوه روش استدلال پیش رو است که از داده‌ها شروع می‌کند و به نتیجه می‌رسد یعنی با درنظر گرفتن داده‌های مربوط به موضوع مورد سؤال از (اگر)ها شروع کرده و به نتایج یا (پس)های مناسب می‌رسد به عبارت دیگر در زنجیره پیش رو از مقدمات به نتایج می‌رسیم، روش دوم استنتاج آن است که از نتایج شروع می‌کند و برای چنان نتایج مشخص به دنبال مقامات یا شرایط اولیه مناسب می‌گردد به عبارت دیگر نقطه شروع (پس)ها هستند و از آن‌ها به (اگر)ها دست می‌یابد. روش اول استنتاج را روش مبتنی بر داده و روش دوم را روش مبتنی بر هدف می‌خوانند.

امکانات توضیح (Explanation Facilities)

برای نشان دادن مراحل نتیجه‌گیری سیستم خبره برای یک مسئله خاص با واقعیات خاص به زبان قابل فهم برای کاربر به کار می‌رود. این امکانات این فایده را دارد که کاربر با دیدن مراحل استنتاج اطمینان بیشتری به تصمیم گرفته شده توسط سیستم خواهد داشت؛ و خبره‌ای که دانش او وارد پایگاه دانش شده است اطمینان حاصل خواهد کرد که دانش او به صورت صحیح وارد پایگاه دانش شده است.

رابط کاربر

منظور از رابط کاربر، مجموعه‌ای از تجهیزات و نرم‌افزارها است که به صورت کانال ارتباط کاربر و سیستم خبره عمل می‌کند یعنی به کاربر امکان ارایه اطلاعات مربوط به مسئله مورد نظر را به سیستم می‌دهد و از طرف دیگر استنتاجات سیستم را در اختیار کاربر می‌گذارد.

واسط کاربر یک سیستم خبره طبیعتاً باید از قدرت تبادلی بالایی برخوردار باشد تا ساختار تبادل اطلاعات به شکل گفتگوی یک متقاضی و یک انسان خبره صورت گیرد.

مزایای یک سیستم خبره چیست؟

میزان مطلوب بودن یک سیستم خبره اصولاً به میزان قابلیت دسترسی به آن و میزان سهولت کار با آن بستگی دارد.

مزایای سیستم‌های خبره را می‌توان به صورت زیر دسته‌بندی کرد:

    • افزایش قابلیت دسترسی: تجربیات بسیاری از طریق کامپیوتر دراختیار قرار می‌گیرد و به طور ساده‌تر می‌توان گفت یک سیستم خبره، تولید انبوه تجربیات است.
    • کاهش هزینه:تجربیات بسیاری از طریق کامپیوتر دراختیار قرار می‌گیرد و به طور ساده‌تر می‌توان گفت یک سیستم خبره، تولید انبوه تجربیات است
    • کاهش خطر: سیستم خبره می‌تواند در محیط‌هایی که ممکن است برای انسان سخت و خطرناک باشد نیز بکار رود.
    • دائمی بودن: سیستم‌های خبره دائمی و پایدار هستند. به عبارتی مانند انسان‌ها نمی‌میرند و فنا ناپذیرند.
    • تجربیات چندگانه: یک سیستم خبره می‌تواند مجموع تجربیات و آگاهی‌های چندین فرد خبره باشد.
    • افزایش قابلیت اطمینان: سیستم‌های خبره هیچ وقت خسته و بیمار نمی‌شوند، اعتصاب نمی‌کنند یا علیه مدیرشان توطئه نمی‌کنند، درصورتی که اغلب در افراد خبره چنین حالاتی پدید می‌آید.
    • قدرت تبیین (Explanation): یک سیستم خبره می‌تواند مسیر و مراحل استدلالی منتهی شده به نتیجه‌گیری را تشریح نماید. اما افراد خبره اغلب اوقات به دلایل مختلف (خستگی، عدم تمایل و…) نمی‌توانند این عمل را در زمان‌های تصمیم‌گیری انجام دهند. این قابلیت، اطمینان شما را در مورد صحیح بودن تصمیم‌گیری افزایش می‌دهد.
    • پاسخ‌دهی سریع:سیستم‌های خبره، سریع و دراسرع وقت جواب می‌دهند.
    • پاسخ‌دهی در همه حالات: در مواقع اضطراری و مورد نیاز، ممکن است یک فرد خبره به خاطر فشار روحی یا عوامل دیگر، صحیح تصمیم‌گیری نکند ولی سیستم خبره این معایب را ندارد.
    • پایگاه تجربه: سیستم خبره می‌تواند همانند یک پایگاه تجربه عمل کند و انبوهی از تجربیات را در دسترس قرار دهد.
    • آموزش کاربر(Intelligent Tutor): سیستم خبره می‌تواند همانند یک خودآموز هوش عمل کند. بدین صورت که مثال‌هایی را به سیستم خبره می‌دهند و روش استدلال سیستم را از آن می‌خواهند.
    • سهولت انتقال دانش: یکی از مهمترین مزایای سیستم خبره، سهولت انتقال آن به مکان‌های جغرافیایی گوناگون است. این امر برای توسعه کشورهایی که استطاعت خرید دانش متخصصان را ندارند، مهم‌است.

مثال‌هایی از سیستم‌های خبره تجاری:

    • MYCIN : اولین سیستم متخصص موفق جهان بود که در سال ۱۹۷۰ در دانشگاه استنفورد طراحی شد. هدف از ساخت این سیستم کمک به پزشکان در تشخیص بیماری‌های ناشی از باکتری بود. مشکل عمده در تشخیص بیماری برای یک پزشک آن است که تشخیص سریع و قاطع یک بیماری با توجه به تعداد بسیار زیاد بیماری موجود، عملی دشوار است.MYCIN با تشخیص دادن قاطع بیماری‌ها توانست که این نیاز را برآورده سازد.
    • PROSPECTOR: یک متخصص در امر زمین‌شناسی است که احتمال وجود رسوبات معدنی در یک ناحیه بخصوص را پیش بینی می‌کند. این سیستم در سال ۱۹۸۷ توسط «ریچارد دودا» و «پیتر هارد» و «رنه ربو» ساخته شد.

در اوایل دهه ۸۰ سیستم‌های متخصص به بازار عرضه شد که می‌توانستند مشورت‌های مالیاتی، توصیه‌های بیمه‌ای یا قانونی را به استفاده کنندگان خود ارائه دهند.

مشخصه‌های سیستم خبره

    1. جداسازی دانش از کنترل – یک سطح پایین‌تر این مبحث، در پایگاه داده قابل مشاهده است. در پایگاه داده سعی بر این است که داده‌ها از رویه‌های پیاده‌سازی شونده روی داده‌ها، مجزا باشند. مزیت این جداسازی این است که تعمیم یافتگی در سیستم، افزایش می‌یابد.
    2. برخورداری از دانش خبره و تخصصی
    3. تمرکز بر روی تخصص‌های خاص و ویژه
    4. استدلال با نمادها
    5. استدلال هیوریستیک و تجربی – استدلالی که بر اثر تجربه به دست می‌آید.
    6. قابلیت استدلال نادقیق – یعنی با قوانین احتمالی هم استدلال نماید. سیستم خبره باید بتواند در محیط‌هایی که اطلاعات نادقیق است(کامل نیست) استدلال کند. این استدلال می‌تواند اشتباه باشد چون اطلاعات کامل نیست. مثلاً پزشکی را در نظر بگیرید که تجربه داردو تازه‌کار هم نیست، ولی زمانی که وضعیت بحرانی پیش می‌آید بااید بتواند با اطلاعات کم، بهترین تصمیم را بگیرد.
    7. محدودیت نسبت به مسائل قابل حل – تنها مسائل قابل حل، توسط سیستم‌های خبره، قابل پیاده‌سازی باشد. تا مسئله‌ای حل نشده باشد، سیستم خبره نمی‌تواند به آن پاسخ دهد. باید یک فرد خبره‌ای باشد که اطلاعات از او گرفته شده و در سیستم قرار داده شود.
    8. مناسب بودن سیستم خبره از نظر پیچیدگی – مسائل سیستم خبره نباید خیلی سخت و نه خیلی راحت باشد.
    9. احتمال اشتباه – ممکن است سیستم خبره در تعیین راه‌حل دچار مشکل شود.

منبع


سیستم های خبره

سیستم های خِبره یا سیستم‌های خِبره (Expert systems) به دسته‌ای خاص از نرم‌افزارهای رایانه‌ای اطلاق می‌شود که در راستای کمک به کاردانان و متخصّصان انسانی و یا جایگزین جزئی آنان در زمینه‌های محدود تخصّصی تلاش دارند. اینگونه سیستم ها، در واقع، نمونه‌های آغازین و ساده‌تری از فناوری پیش‌رفته‌تر سیستم های دانش-بنیان به شمار می‌آیند. تیم ما توانایی اجرا و پیاده سازی انواع سیستم های خبره را دارد.

اگر بخواهیم سیستم‌های خبره را در یک جمله توصیف کنیم باید بگوییم که این سیستم‌ها به‌طور کلی برنامه‌هایی هستند که قادرند همانند انسان مسایل خاصی را استدلال کنند. این سیستم‌ها برای استدلال، از الگوهای منطقی خاصی استفاده می‌کنند که مشابه همان کاری است که انسان در زمان حل یک مسئله عمل می‌کند. در واقع همان‌طور که انسان برای حل یک مسئله، تعقل یا اندیشه می‌کند، سیستم‌های خبره نیز برای این کار به الگوها و راه و روش‌هایی متوسل می‌شوند که انسان برای آن‌ها مشخص کرده است، بنابراین چون از منطق بشری استفاده می‌کنند می‌توان گفت که تا حدودی همانند انسان فکر می‌کنند.

سیستم های خبره در زمینه‌های بسیار متنوعی کاربرد یافته‌اند که برخی از این زمینه‌ها عبارتند از پزشکی، حسابداری، کنترل فرایندها، منابع انسانی، خدمات مالی، و GIS. حسابداری، تجزیه و تحلیلهای مالی پزشکی (تشخیص بیماری)، آنژیوگرافی، باستان شناسی، تولید ویفرهای سیلیکونی و انواع خاصی از پرتونگاری در زمینه‌های مختلف دیگری نیز سیستمهای خبره پدید آمده‌اند همانند: مشاوره حقوقی، مشاوره برای انتخاب بهترین معماری یا ترکیب بندی سیستم کامپیوتری، مشاوره مهندسی ساختمان و غیره.

در هر یک از این زمینه‌ها می‌توان کارهایی از نوع راهنمایی، پردازش، دسته‌بندی، مشاوره، طراحی، تشخیص، کاوش، پیش بینی، ایجاد مفاهیم، شناسایی، توجیه، یادگیری، مدیریت، واپایش، برنامه‌ریزی، زمان‌بندی و آزمایش را با مددجویی از سیستم های تجربی با سرعت و آسانی بیشتری به انجام رسانید.

سیستم های خبره یا به عنوان جایگزین فرد متخصص یا به عنوان کمک به وی استفاده می‌شوند.

سیستم­ های خبره سیستم­ های برنامه ­ریزی شده­ای هستند که پایگاه­ دانش آنها انباشته از اطلاعاتی است که انسان­ها هنگام تصمیم­ گیری درباره یک موضوع خاص بر اساس آن تصمیم می­گیرند.

درواقع سیستم خبره برنامه­ های کامپیوتری هستند که نحوه تفکر یک متخصص در یک زمینه خاص را شبیه‌سازی می­کند. این نرم‌افزارها، دارای الگوی منطقی­ هستند که یک متخصص براساس آنان تصمیم‌گیری می­کند. یکی از اهداف هوش مصنوعی، فهم هوش انسانی با شبیه‌سازی آن توسط برنامه کامپیوتری است. البته بدیهی است که هوش را می‌توان به بسیاری از مهارت­های مبتنی بر فهم، از جمله توانایی تصمیم­ گیری، یادگیری و فهم زبان تعمیم داده و از این‌رو یک واژه کلی محسوب می­شود. بیشترین دستاوردهای هوش مصنوعی، در زمینه تصمیم‌گیری و حل مسئله بوده است؛ که عالی­ترین موضوع سیستم خبره را شامل می­شود. به آن نوعی از برنامه هوش مصنوعی که به سطحی از خبرگی می­رسند که می­توانند به‌جای یک متخصص در یک زمینه خاص تصمیم­ گیری کنند، سیستم خبره می‌گویند.

جهانی شدن در هر مکانی سازمان­ها را در مقابل موقعیت­ های جدید رقابتی قرار داده است، مکانی که توانمندی‌های علمی و رفتارهای کارآ را به‌سوی فراهم کردن حاشیه رقابتی سوق می‌دهد. این روزها بسیاری از سازمان­ها سعی می‌کنند تا موقعیت رقابتی‌شان را از طریق استفاده بهتر از دانش و جستجو برای روش‌های جدید، به‌منظور آماده کردن و ارتقای تجربیات و سرمایه‌های عقلانی که برای خود در نظر گرفته‌اند، بهبود دهند. به‌عبارت دیگر، محیط­های تجاری پیچیده‌تر و رقابتی‌تر شده‌اند و نیاز به ابزارها برای کمک به تصمیم­گیران که قادر به تصمیم­گیری دقیق نیستند، بیشتر شده است. موفقیت یک سازمان به بسیاری از عوامل بستگی دارد. بسیاری از این عوامل، در خارج از کنترل سازمان­ها است؛ عواملی از قبیل قوانین و مقررات دولتی و غیره که تأثیر نسبتا شدیدی را بر تصمیم‌های سازمانی دارند؛ اما اکثر عواملی که بر تصمیم­های سازمان اثرگذارند، در حیطه کنترل و اختیار سازمان­ها است. تکنولوژی سخت‌افزارها و نرم­افزارهای کامپیوتری در سال­های اخیر، تغییرات مشخصی را ایجاد کرده‌اند.

مزیت این قبیل تکنولوژی­ها تولید، جمع ­آوری، ذخیره ­سازی، مدیریت و توزیع اطلاعات به‌صورتی راحت‌تر و اثربخش‌تر است. کامپیوترها رشد چشم‌گیری داشته‌اند و قابلیت در دسترس بودن آنها، موجب رشد استفاده از سیستم‌های اطلاعاتی را فراهم آورده است. سیستم­ خبره به‌عنوان سیستم اطلاعاتی که به‌منظور توجه به امکان‌پذیری و انتخاب مناسب در شرایط معین طراحی شده است، جهت­ گیری متفاوت و برجسته­ ای در مقایسه با سیستم­های اطلاعاتی که مبنای آن مبادله­ ای است، دارند. سیستم اطلاعاتی مبادله­ ای، ابزاری کارآ در رابطه با فرآیند ذخیره‌سازی مبادلات است؛ بدین دلیل، این سیستم­ها ساختار ویژه­ای را ارائه می‌دهند که به‌طور خلاصه بر مبنای پایگاه منظمی قرارگرفته است. بنابراین در حالی‌که سیستم­های اطلاعاتی مبادله‌گرا، دارای تمرکز اطلاعاتی هستند، سیستم خبره دارای تمرکز خاصی برتصمیم ­گیری­ ها است.

با توسعه تحقیقات هوش مصنوعی که هدف آن مشابه‌سازی ویژگی‌های انسان از طریق سیستم‌های کامپیوتر است، سیستم‌های خبره به‌عنوان سیستم‌هایی که بتوانند به‌جای انسان در فرایند تصمیم‌گیری به انتخاب بپردازند، در اواخر دهه ۹۰ مطرح گردید. اما نخستین سیستم خبره اتوماتیک در سال ۱۹۶۵ میلادی در دانشگاه استنفورد به‌نام DENDRAL طراحی شد؛ که در شیمی کاربرد داشت و هدف آن کمک به جستجوی ساختار ترکیبات ارگانیکی بود که از راه محاسبه بر روی فرمول‌های شیمیایی به‌دست می‌آمد.

سیستم‌های پشتیبانی تصمیم (DSS Design Support System)

سیستم­های خبره یکی از شاخه ­ها و زیرمجموعه­ های مهم سیستم­های پشتیبانی تصمیم هستند؛ که با کمک به متخصصان انسانی و با شبیه­ سازی تفکر خاص یک متخصص به فرآیند تصمیم­ گیری و تصمیم‌سازی در سازمان­ها کمک­ های فراونی می­کنند. می­توان DSS یا سیستم‌های پشتیبانی تصمیم را به‌عنوان یک سیستم پشتیبانی مدیران، جهت حل مسائل نیمه ساختاریافته به‌وسیله فراهم کردن اطلاعات و پیشنهادات تعریف کرد .این پیشنهاد می­تواند به‌شکل تصمیم ­های توصیه‌شده و هم‌چنین فرآیندهای توصیه ­ای برای به جریان انداختن امور جاریه سازمان باشد؛ ظرفیت فرآیند توصیه­ ای در این مقوله، DSS را به‌عنوان یک سیستم خبره معرفی می­نماید.

DSS سیستم‌های هدفمندی هستند که مدل‌های تحلیلی را باداده‌های عملیاتی برای مدیرانی که با موقعیت‌های تصمیم نیمه ساختاریافته مواجه هستند، ترکیب می‌نمایند. این سیستم­ها، به تحلیل و مدل‌سازی مشکلات و مسائل غیر ساختاریافته کمک شایانی می­کنند؛ یکی از مواردی که مکرر از سیستم‌های DSS استفاده می­شود، بسته یا نرم‌افزارهای صفحه‌گستر هستند؛ که توسط این صفحه‌گسترها کاربران می­توانند مدل­های مختلف را ساخته و متغیرها و فرضیات مختلف را بررسی کنند.

اجزای سیستم­های خبره

کاربر؛ شخصی است که با سیستم ارتباط متقابل دارد؛ که دسته بندی‌های مختلفی از آن وجود دارد. در بین این دسته‌بندی‌ها، کاربری که از هرجهت درگیر با پروژه سیستم باشد، نقش مهمی در موفقیت ایجاد سیستم‌های خبره دارد. ایجاد سیستم‌های خبره تا زمانی‌که مورد پذیرش کاربر قرارنگرفته باشند، سودی نخواهد داشت.

فرد خبره؛ شخصی که متخصص در یک زمینه خاص نه در تمام زمینه‌ها بوده و طی سال‌ها تجربه در حل مسائل مربوط به یک زمینه خاص، تخصص یافته است.

مهندس دانش؛ شخصی است که سیستم‌های خبره را طراحی کرده و می‌سازد؛ یک متخصص کامپیوتر که بر روش‌های هوش مصنوعی اشراف دارد و می‌تواند روش‌های متفاوت هوش مصنوعی را به‌طور مقتضی در حل مسائل واقعی به‌کار گیرد.

پایگاه داده؛ مجموع داده‌هایی درباره موضوع‌ها و وقایعی است که در پایگاه دانش، به‌منظور دست‌یابی به‌نتایج مورد نظر به‌کار خواهد رفت.

پایگاه دانش؛ مشتمل بر دانش متخصص و شیوه‌های داد و ستد با پایگاه داده برای دست‌یابی به نتایج مورد نظر است.

موتور استنتاج؛ امکان استنتاج و نتیجه‌گیری از ارتباط بین پایگاه داده و پایگاه دانش را فراهم می‌کند.

سیستم توضیح؛ چگونگی دست‌یابی سیستم به یک نتیجه خاصی را برای کاربر تشریح می‌نماید. این موضوع از اهمیت ویژه‌ای برخوردار است؛ زیرا پذیرش و تأیید کاربر را افزایش می‌دهد و به شناسایی و تصحیح خطا واشکال‌های ساده سیستم نیز کمک می‌کند.

قسمت اکتساب دانش؛ که فرایند استخراج، طراحی و ارائه دانش است. در‌ اغلب موارد، استخراج دانش متخصص از طریق تکنیک مصاحبه صورت می‌گیرد.

مزایا و محدودیت­های سیستم­های خبره

از دستاوردهای سیستم­های خبره می­توان صرفه‌جویی در هزینه­ ها و نیز تصمیم­ گیری بهتر و دقیق‌تر را نام برد. استفاده از سیستم­های خبره، برای شرکت­ها می­تواند صرفه­ جویی به‌همراه داشته باشد، در زمینه تصمیم­ گیری نیز گاهی می­توان در شرایط پیچیده با بهره­ گیری از چنین سیستم­ هایی تصمیم‌های بهتری را اتخاذ کرد و جنبه­ های پیچیده­ ای را در مدت زمان بسیار کمی مورد بررسی قرار داد که تحلیل آن به روزها زمان احتیاج دارد.

از سوی دیگر، به‌کارگیری سیستم­ های خبره، محدودیت­های خاصی را به‌دنبال دارد؛ به‌عنوان نمونه، این سیستم­ ها نسبت به آنچه انجام می­دهند، هیچ حسی ندارند. چنین سیستم­ هایی نمی­توانند خبرگی خود را به گستردگی وسیعی تعمیم دهند؛ چراکه تنها برای یک منظور خاص طراحی شده­ اند و پایگاه دانش آنان از دانش متخصصان آن حوزه نشات گرفته است؛ به‌همین علت، محدود هستند. این سیستم‌ها از آنجا که توسط دانش متخصصان، تغذیه اطلاعاتی شده­ اند، درصورت بروز برخی از موارد پیش‌بینی نشده نمی­توانند شرایط جدید را به‌درستی تجزیه و تحلیل کنند.

ریموند دو مشخصه برای محدودیت پتانسیل سسیستم‌های خبره به‌عنوان یک وسیله حل مسئله امور بازرگانی بر‌می‌شمارد: نخست اینکه، آنها علم متناقض را نمی‌توانند کنترل نمایند. دوم، سیستم‌های خبره نمی‌توانند مهارت‌های غیر استدلالی که به‌عنوان مشخصه شخص حل‌کننده مسئله است، را به‌کار برند.

مشکلات استقرار سیستم­های خبره

یکی از موانع اصلی بر سر استقرار سیستم‌های اطلاعاتی و به‌خصوص سیستم­های هوشمند تصمیم ­گیری، نیروی انسانی موجود در سازمان است. مقاومت در برابر تغییر یکی از نشانه‌های اهمیت نیروی انسانی سازمان است. بیشتر افراد با شدت­های متفاوت به تغییرپذیری بی­علاقه ­اند. انسان­ها متشکل از عادات خود هستند هرچه انسان­ها می­دانند، حتی اگر مطلبی را به اشتباه یاد گرفته باشند، آن‌را به‌عنوان ارزش قابل احترامی برای خود می‌دانند. تغییر و اصلاح این ارزش­ها هرچند در افراد مختلف متفاوت است، ولی تغییرپذیری انسان‌ها مترادف با بی‌ارزش شدن دانسته­ هایشان تلقی می‌شود و مقاومت ناخودآگاه با آن امری اجتناب‌ناپذیر است.

از جمله کاربردهای سیستم های خبره می توان به موارد زیر اشاره کرد:

  • کنترل ترافیک شهرهای بزرگ
  • هواپیما و فرودگاه ها
  • کتابخانه ها
  • سامانه های تحلیل مالی
  • سامانه های آماری
  • سامانه های آسان کننده تصمیم گیری

منبع

سیستم خبره قسمت ۱
سیستم خبره قسمت ۲
سیستم خبره قسمت ۳
سیستم خبره قسمت ۴
سیستم خبره قسمت ۵
سیستم خبره قسمت ۶

تشخیص پلاک خودرو

چکیده– شماره پلاک خودرو یکی از مناسب ترین اقلام اطلاعات جهت احراز هویت خودروها می باشد.سامانه تشخیص پلاک خودرو یک سیستم کاملاً مکانیزه است. در این مقاله به بررسی و نحوه کار یک سیستم اتوماتیک تشخیص پلاک میپردازیم که امروزه نمی توان کاربرد مفید و چشمگیر آن را نادیده گرفت. این سیستم با استفاده از پردازش تصویر خودروهای عبوری از یک مکان، شماره پلاک آنها را استخراج کرده و به صورت عددی مورد استفاده قرار می دهد.

کلمات کلیدی– تشخیص پلاک خودرو، تشخیص کاراکتر نوری، پردازش تصویر، OCR

فایل PDF – در ۷ صفحه- نویسنده : مریم زارع

تشخیص پلاک خودرو

پسورد فایل : behsan-andish.ir


تشخیص اتوماتیک پلاک خودرو فارسی به کمک روش های پردازش تصویر و شبکه های عصبی

چکیده- شماره پلاک خودرو یکی از مناسب ترین اقلام اطلاعاتی جهت احراز هویت خودروها می باشد. سیستم تشخیص پلاک خودرو یک سیستم مکانیزه است که با عکس گرفتن از خودروها، شماره پلاک آنها را استخراج می کند.روشی که در این مقاله استفاده شده شامل دو قسمت می باشد. در قسمت اول با استفاده از لبه یابی و عملیات مورفولوژی محل پلاک شناسایی شده و در قسمت دوم با استفاده از شبکه عصبی هاپفیلد کاراکترها شناسایی می شوند. این روش بر روی ۵۰۰ تصویر مختلف از نظر پس زمینه، فاصله و زاویه دید مورد آزمایش قرار گرفته است، که نرخ استخراج صحیح پلاک را ۹۵% و همچنین نرخ خواندن صحیح پلاک را ۹۰% بدست آوردیم.

کلمات کلیدی– تشخیص پلاک خودرو، شبکه عصبی هاپفیلد، عملیات مورفولوژی، لبه یابی، هیستوگرام.

فایل PDF – در ۸ صفحه- نویسندگان : محمدصادق معمارزاده، همایون مهدوی نسب، پیمان معلم.

تشخیص اتوماتیک پلاک خودرو فارسی به کمک روش های پردازش تصویر و شبکه عصبی

پسورد فایل : behsan-andish.ir


روش ﺟﺪﯾﺪ ﻣﮑﺎنﯾﺎﺑﯽ ﭘﻼك ﺧﻮدرو در ﺗﺼﺎوﯾﺮ رﻧﮕﯽ

ﭼﮑﯿﺪه – اﯾﻦ ﻣﻘﺎﻟه روش ﺟدﯾﺪی ﺟﻬﺖ ﻣﮑﺎنﯾﺎﺑﯽ ﭘﻼك ﺧﻮدرو اراﺋﻪ میﮐﻨﺪ. روش پیشنهادی ﺑﻪ ﻋﻠﺖ ﻋﺪم اﺳﺘﻔﺎده از  عملیاتﻫﺎي ﭘﺮﻫﺰﯾﻨﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ، داراي ﺳﺮﻋﺖ پاسخگویی ﺑﺎلاتري نسبت ﺑﻪ روشﻫﺎی ﻣﺸﺎﺑﻪ اﺳﺖ. روش ﭘﯿﺸﻨﻬﺎدي در اﯾﻦ ﻣﻘﺎﻟﻪ، ﻣﺒﺘﻨﯽ ﺑﺮ ﺷﻨﺎﺳﺎﯾﯽ اﻟﮕﻮ و ﺑﻮده و ﺑﺎ اﺳﺘﻔﺎده از پیمایش ﺳﺘﻮﻧﯽ ﺑﺮاي ﯾﺎﻓﺘﻦ اﻟﮕﻮﯾﯽ اﺳﺘﺎﻧﺪارد در ﺗﺼﻮﯾﺮ رنگی، ﭘﻼك ﺧﻮدرو را ﻣﮑﺎن یابی و آن را از تصویر اﺳﺘﺨﺮاج می کند. از ﺧﺼﻮﺻﯿﺎت روش ﻣﺬﮐﻮر، ﺳﺮﻋﺖ ﺑﺎلای ﭘﺮدازش و ﭘﺎﺳﺦ گویی ﺳﺮﯾﻊ، قابلیت ﻧﺼﺐ و اﺟـﺮ در ریزپردازنده ها، ﻗﺎبلیت شناسایی چندین پلاک ﻣﻮﺟﻮد دریک تصویر و پردازش بر روی تصویر رنگی بدون تغییر اندازه ی آن، ﻣﯽﺑﺎﺷﺪ. روش اراﺋﻪ ﺷﺪه، دارای کاربردهای عملی از قبیل صدور برگ جریمه الکترونیکی، اﯾﺠﺎد ﺳﺎﻣﺎﻧﮥ ﻫﻮﺷﻤﻨﺪ ﭘﺮداﺧﺖ ﻋﻮارض، کنترل ﺗﻮﻧﻞ ﻫﺎ، بزرگراه ها، پارکینگ ها، ﻣﺤﺪوده ﻃﺮح ترافیک و ﻏﯿﺮه، ﻣﯽﺑﺎﺷﺪ. ﻧﺘﺎﯾﺞ آزﻣﺎﯾﺸﺎت ﺑﺮ روي ﯾﮏ ﻣﺠﻤﻮﻋﻪ داده دﻟﺨﻮاه از ﺗﺼﺎوﯾﺮ دورﺑﯿﻦﻫﺎي ﮐﻨﺘﺮل ﺳﺮﻋﺖ در ﺑﺰرﮔﺮاه ﻫﺎي ﮐﺸﻮر، ﮐﺎراﯾﯽ، دﻗﺖ، اﻃﻤﯿﻨﺎن و ﺳﺮﻋﺖ ﺳﯿﺴﺘﻢ ﭘﯿﺸﻨﻬﺎدي را ﺗﺎﯾﯿﺪ ﮐﺮد ﺑﻪ ﻃﻮري ﮐﻪ در آزﻣﺎﯾﺸﺎت  دﻗـﺖ تشخیص ۹۶ درصد را به خود اختصاص داده است.

کلمات کلیدی– مکان یابی پلاک خودرو، تشخیص پلاک خودرو، شناسایی الگو.

فایل PDF – در ۶ صفحه- نویسندگان : امیرحسین اشتری و محمود فتحی.

روش جدید مکانیابی پلاك خودرو در تصاویر رنگی

پسورد فایل : behsan-andish.ir


شرکت بهسان اندیش تولید کننده سامانه های هوشمند مفتخر به تولید یکی از دقیقترین و سریعترین سامانه های جامع کنترل تردد خودرو می باشد که می توانید جهت آشنایی با قابلیت ها و امکانات این محصول به لینک :سامانه جامع کنترل تردد خودرو بهسان(پلاک خوان) مراجعه فرمایید.


ﺭﻭﺷﯽ ﺟﺪﻳﺪ ﻭ ﺳﺮﻳﻊ ﺑﺮﺍﯼ ﺗﺸﺨﻴﺺ ﻣﺤﻞ ﭘﻼﮎ ﺧﻮﺩﺭﻭ ﺍﺯ ﺗﺼﺎﻭﻳﺮ ﭘﻴﭽﻴﺪﻩ ﺑﺮ ﺍﺳﺎﺱ ﻋﻤﻠﻴﺎﺕ ﻣﻮﺭﻓﻮﻟﻮﮊﻳﮑﯽ

 ﭼﮑﻴﺪﻩ – ﺗﺸﺨﻴﺺ ﻣﺤﻞ ﭘﻼﮎ ﺧﻮﺩﺭو ﻣﻬﻤﺘﺮﻳﻦ ﻣﺮﺣﻠﻪ ﺷﻨﺎﺳﺎﻳﯽ ﭘﻼک ﺧﻮﺩﺭو ﺩﺭ ﺳﻴﺴﺘﻤﻬﺎﯼ حمل ﻭ ﻧﻘﻞ هوشمند ﺍﺳﺖ . ﺩﺭ ﺍﻳﻦ ﻣﻘﺎﻟﻪ روشی  بلادرنگ ﻭ ﺳﺮﻳﻊ ﺑﺮﺍﯼ ﭘﻴﺪﺍ ﮐﺮﺩﻥ ﭘﻼﮎ ﺧﻮﺩﺭﻭﻫﺎ ﺩﺭ ﺗﺼﺎﻭﻳﺮ ﭘﻴﭽﻴﺪﻩ ﻣﻌﺮﻓﯽ ﻣﯽ شود. ﺩﺭ ﺍﻟﮕﻮﺭﻳﺘﻢ ﭘﻴﺸﻨﻬﺎﺩﯼ ﺍﺑﺘﺪﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻋﻤﻠﮕﺮ ﺳﻮﺑﻞ ﺍﻗﺪﺍﻡ ﺑﻪ ﻳﺎﻓﺘﻦ لبه ﻫﺎﯼ ﻋﻤﻮﺩﯼ ﺗﺼﻮﻳﺮ می ﮐﻨﻴﻢ، ﺳﭙﺲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ تحلیل ﻫﻴﺴﺘﻮﮔﺮﺍﻡ ﻭ ﺗﺮﮐﻴﺒﯽ ﺍﺯ ﻋﻤﻠﮕﺮﻫﺎﯼ ﻣﻮﺭﻓﻮﻟﻮﮊیکی ﭘﻼک ﺧﻮﺩﺭﻭ ﺭﺍ ﺍﺯ ﺗﺼﻮﻳﺮ ﺍﺳﺘﺨﺮﺍﺝ می کنیم.ﺭﻭﺵ ﭘﻴﺸﻨﻬﺎﺩﯼ را ﺭﻭﯼ پاﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﯼ ﺷﺎﻣﻞ ۳۰۰ ﺗﺼﻮﻳﺮ ﻣﺨﺘﻠﻒ ﺍﺯ نظر ﭘﺲ ﺯﻣﻴﻨﻪ، ﺍﻧﺪﺍﺯﻩ، ﻓﺎﺻﻠﻪ، ﺯﺍﻭﻳﻪ ﺩﻳﺪ ﻭ ﺷﺮﺍﻳﻂ ﻧﻮﺭی ﻣﻮﺭﺩ ﺁﺯﻣﺎﻳﺶ ﻗﺮﺍﺭ ﺩﺍﺩﻩ ﻭ ﻧﺮﺥ ﺍﺳﺘﺨﺮﺍﺝ ﺻﺤﻴﺢ ﭘﻼﮎ  را ۸۱/۳% بدست آوردیم.
کلمات کلیدی– تشخیص محل، پلاک خودرو، ﻫﻴﺴﺘﻮﮔﺮﺍﻡ، ﻋﻤﻠﻴﺎﺕ ﻣﻮﺭﻓﻮﻟﻮﮊﻳﮑﯽ.
فایل PDF – در ۷ صفحه- نویسندگان : فرهاد فرجی و رضا صفابخش

ﺭﻭﺷﯽ ﺟﺪﻳﺪ ﻭ ﺳﺮﻳﻊ ﺑﺮﺍﯼ ﺗﺸﺨﻴﺺ ﻣﺤﻞ ﭘﻼﮎ ﺧﻮﺩﺭﻭ ﺍﺯ ﺗﺼﺎﻭﻳﺮ ﭘﻴﭽﻴﺪﻩ ﺑﺮ ﺍﺳﺎﺱ ﻋﻤﻠﻴﺎﺕ ﻣﻮﺭﻓﻮﻟﻮﮊﻳﮑﯽ

پسورد فایل : behsan-andish.ir


شناسایی پلاک خودروهای ایرانی با روش جایابی فازی پلاک

چکیده– یکی از مهم ترین زیرسامانه های حمل و نقل هوشمند، سامانه ی تشخیص و شناسایی پلاک خودرو است. دشواری تشخیص و شناسایی صحیح پلاک خودرو در شرایط مختلف محیطی موجب شده تا پژوهش در این زمینه ی پژوهشی هم چنان ادامه داشته باشد. مسئله ی تشخیص پلاک خودرو را می توان به سه زیر مسئله ی “جایابی پلاک”، “استخراج نویسه های پلاک” و “شناسایی نویسه ها” تقسیم کرد. در این مقاله تلاش شده به کمک قواعد فازی، الگوریتم های جایابی پلاک خودروهای ایرانی و شناسایی نویسه های آن بهبود یابد. جایابی پلاک با لبه یابی، تحلیل ریخت شناسانه و استفاده از قواعد فازی و شناسایی نویسه ها با استفاده از ماشین بردار پشتیبانی فازی انجام شده است. با آزمایش الگوریتم یاد شده بر روی پنجاه تصویر صحت جایابی پلاک خودرو ۹۰ درصد و صحت شناسایی نویسه ها ۹۴ درصد به دست آمد که در مقایسه با روش های مرسوم توانمندی چشمگیری دارد.

کلمات کلیدی– پلاک خودروف شناسایی الگو، ماشین بردار پشتیبانی، نظریه ی فازی.

فایل PDF – در ۱۰ صفحه- نویسندگان : غلامعلی منتظر و محمد شایسته فر

شناسایی پلاک خودروهای ایرانی با روش جایابی فازی پلاک

پسورد فایل : behsan-andish.ir


Vehicle License Plate Identification & Recognition

شناسایی و به رسمیت شناختن شماره پلاک خودرو

Abstract- Existing vehicle license plate identification and recognition systems are potent for either their accuracy
or speed but not a combination of both. The algorithm proposed in this dissertation attempts to achieve
this fine balance between the accuracy and speed that such a system must posses. The mathematical
morphology operators of dilation and erosion are utilized to identify the region within an image which
contains the license plate. Using the concept of color coherence vectors, an image recognition algorithm
is presented which utilizes this extracted region and compares it as a whole to other images of license
plates, in the database. The application developed for the testing of this algorithm works with an
accuracy of eighty eight percent and an average processing time of two seconds per image.
Key Words and Phrases: Vehicle license plate recognition, color coherence vectors, mathematical
morphology

فایل PDF – در ۱۰ صفحه- نویسندگان : SANJAY GOEL, PRIYANK SINGH

Vehicle License Plate Identification & Recognition

پسورد فایل : behsan-andish.ir


Sensor network based vehicle classification and license plate identification system

طبقه بندی وسایل نقلیه بر اساس شبکه حسگر و سیستم شناسایی پلاک وسایل نقلیه

Abstract—Typically, for energy efficiency and scalability purposes, sensor networks have been used in the context of environmental and traffic monitoring applications in which operations at the sensor level are not computationally intensive. But increasingly, sensor network applications require data and compute intensive sensors such video cameras and microphones. In this paper, we describe the design and implementation of two such systems: a vehicle classifier based on acoustic signals and a license plate identification system using a camera. The systems are implemented in an energy-efficient manner to the extent possible using commercially available hardware, the Mica motes and the Stargate platform. Our experience in designing these systems leads us to consider an alternate more flexible, modular, low-power mote architecture that uses a combination of FPGAs, specialized embedded processing units and sensor data acquisition systems.
Keywords: wireless sensor networks, seismic, acoustic vehicle classification, license plate detection

فایل PDF – در ۴ صفحه- نویسندگان :Jan Frigo, Vinod Kulathumani, Sean Brennan∗, Ed Rosten, Eric Raby

Sensor network based vehicle classification and

پسورد فایل : behsan-andish.ir


Real Time Automatic License Plate Recognition in Video Streams

تشخیص خودکار زمان واقعی شماره پلاک وسایل نقلیه در جریان های ویدیویی

Abstract
In recent years there has been an increased commercial interest in systems for automatic license plate recognition. Some of the existing systems process single images only, some even requiring vehicles to stop in front of a gate so that a still image of good quality can be taken. This thesis presents an approach that makes it possible to process 25 images per second on a standard PC from 2004, allowing identication decisions to be based on information from several images instead of just a single one. Thus, the impact of a single bad image is reduced, and vehicles can be allowed to drive past the camera without hindrance. In order to reach the necessary processing speed, a simplied StauerGrimson background estimation algorithm has been used, enabling the system to only search for license plates on objects that are in motion. The main method for nding license plates has been a computational-wise economical connected component labeling algorithm. A basic pixel-by-pixel comparison OCR algorithm %has also been implemented. A real life test running for twelve days has shown the complete system to have a rate of successful identification at 80 .

فایل PDF – در ۲۸ صفحه- نویسنده : Fredrik Trobro

Real Time Automatic License Plate Recognition

پسورد فایل : behsan-andish.ir


Proposal for Automatic License and Number Plate Recognition System for Vehicle Identification

طرح پیشنهادی برای سیستم شناسایی خودکار شماره پلاک و مجوز برای شناسایی خودرو

Abstract— In this paper, we propose an automatic and mechanized license and number plate recognition (LNPR) system which can extract the license plate number of the vehicles passing through a given location using image processing algorithms. No additional devices such as GPS or radio frequency identification (RFID) need to be installed for implementing the proposed system. Using special cameras, the system takes pictures from each passing vehicle and forwards the image to the computer for being processed by the LPR software. Plate recognition software uses different algorithms such as localization, orientation, normalization, segmentation and finally optical character recognition (OCR). The resulting data is applied to compare with the records on a database. Experimental results reveal that the presented system successfully detects and recognizes the vehicle number plate on real images. This system can also be used for security and traffic control.

(Keywords— License and number plate recognition (LNPR) system, image processing, orientation, normalization, segmentation, identification, optical character recognition (OCR

فایل PDF – در ۵ صفحه- نویسنده : Hamed Saghaei

Proposal for Automatic License and Number Plate

پسورد فایل : behsan-andish.ir


LICENSE PLATE MATCHING TECHNIQUES

تکنیک های انطباق پلاک وسیله نقلیه

فایل PDF – در ۴۲ صفحه- نویسنده : U.S.Department of Transportation-Federal Highway Administration(وزارت راه و ترابری آمریکا-مدیریت بزرگراه فدرال)

LICENSE PLATE MATCHING TECHNIQUES

پسورد فایل : behsan-andish.ir


Development of a New Automatic License Plate Recognition (LPR) System

توسعه یک سیستم تشخیص پلاک خودکار جدید

ABSTRACT In Japan, automatic license plate recognition systems have been used for more than ten years for the purposes of measuring the travel time of vehicles and for some applications which need detailed plate information identification. Due to their efficacy, they are now being utilized throughout the country. Ordinarily, compared to when used for travel time measurements, considering the types of uses for the number information, higher recognition accuracy is often desired when used for some applications which need detailed plate information identification. We have advanced the development of number plate reading for the purpose of travel time measurement applications, refining these technologies for their application to other various applications. In order to fulfill the requirements expected to be met for various applications, we have implemented a variety of innovations in both software and hardware and developed a new LPR system that has many features such as high recognition rate, low false rate, compact design and high reliability by image processing algorithms and an advanced camera unit. We will seek to expand abroad by applying these technologies.

KEYWORDS: Automatic license plate recognition, Automatic number plate recognition, Automatic vehicle identification, Image processing, Vehicle detection, Plate extraction, Character recognition

فایل PDF – در ۱۰ صفحه- نویسنده : Takehiko Kato ,Masatoshi Asada , Kayo Tanaka , Yusuke Yasuhara, Toshihiro Asai , Yasuo Ogiuchi

Development of a New Automatic License Plate Recognition (LPR) System

پسورد فایل : behsan-andish.ir


Development of a License Plate Number Recognition System Incorporating LowResolution Cameras

توسعه یک سیستم شناسایی شماره پلاک شامل دوربین های با رزولوشن پایین

A multi-lane free flow (MLFF) toll collection system installed on a simplified gantry requires compact cameras for supervising enforcement. Because these compact cameras have low image resolution, it is also necessary to develop vehicle license plate recognition technology that uses dynamic image processing. Mitsubishi Heavy Industries, Ltd. (MHI) has developed three technologies based on the conventional license plate recognition system using still images; these technologies improve image quality, process plural images of a single vehicle, and utilize a reference database. Laboratory evaluation tests have verified that even a lowresolution camera system can successfully recognize license plate numbers at a rate of 95% or better, comparable to results from the conventional still image system. MHI is enhancing system robustness to enable application of these technologies to actual products.

فایل PDF – در ۵ صفحه- نویسنده : KENTA NAKAO, KIICHI SUGIMOTO, MAYUMI SAITOH, TAKUMA OKAZAKI

Development of a License

پسورد فایل : behsan-andish.ir


Automatic Number Plate Recognition System

سیستم شناسایی شماره پلاک خودکار

Abstract. Automatic recognition of car license plate number became a very important in our daily life because of the unlimited increase of cars and transportation systems which make it impossible to be fully managed and monitored by humans, examples are so many like traffic monitoring, tracking stolen cars, managing parking toll, red-light violation enforcement, border and customs checkpoints. Yet it’s a very challenging problem, due to the diversity of plate formats, different scales, rotations and non-uniform illumination conditions during image acquisition. This paper mainly introduces an Automatic Number Plate Recognition System (ANPR) using Morphological operations, Histogram manipulation and Edge detection Techniques for plate localization and characters segmentation. Artificial Neural Networks are used for character classification and recognition.
۲۰۱۰ Mathematics Subject Classification. Primary 68T10; Secondary 68T45.

Key words and phrases. license plate recognition, plate region extraction, segmentation, neural networks, optical character recognition, Hough transform, ANPR.

فایل PDF – در ۱۰ صفحه- نویسنده :Amr Badr, Mohamed M. Abdelwahab, Ahmed M. Thabet, and Ahmed M. Abdelsadek

Automatic Number Plate Recognition System

پسورد فایل : behsan-andish.ir


Automatic License Plate Recognition

شناسایی شماره پلاک خودکار

فایل PDF – در ۵ صفحه- نویسنده :Jason Grant

Automatic License Plate Recognition

پسورد فایل : behsan-andish.ir


A Real-Time Mobile Vehicle License Plate Detection and Recognition

یک تشخیص و ردیابی شماره پلاک وسایل نقلیه موبایل زمان واقعی

Abstract
In this paper we present a instant and real-time mobile vehicle license plate recognition system in an open environment. Using a nonfixed video camera installed in the car, the system tries to capture the image of the car in front and to process instant vehicle license plate detection and recognition. We utilize the color characteristics of the barking lights to carry out license plate detection. We first detect the location of the two barking lights in the captured image. Then set license plate detection region using the probability distribution of the license plate between the two lights. This method can eliminate any environmental interference during the license plate detection and improve the rate of accuracy of license plate detection and recognition. Moreover, we use the morphology method Black Top-Hat to enhance the level of separation of the license plate characters. Experiments show that the system can effectively and quickly capture the vehicle image,detect and recognize the license plate whether it is in daytime, nighttime, clear day, raining day or under complicated environment.
Key Words: Real-Time, Wavelet, License Plate, Black Top-Hat

فایل PDF – در ۱۰ صفحه- نویسنده :Kuo-Ming Hung and Ching-Tang Hsieh

A Real-Time Mobile Vehicle License Plate

پسورد فایل : behsan-andish.ir