SlideShare a Scribd company logo
1 of 69
“
”
Arm Programming & Image Processing
Lecture 2
Mohammad Amin Amjadi
Computer Department
Shahid Bahonar University
Fall 2012
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm‫از‬ ‫استفاده‬ ‫با‬OpenCv:
•‫ج‬ ‫دستورات‬ ‫که‬ ‫است‬ ‫این‬ ، ‫باشد‬ ‫آمده‬ ‫ذهنمان‬ ‫به‬ ‫شاید‬ ‫که‬ ‫راهکارهایی‬ ‫اولین‬ ‫از‬ ‫یکی‬‫قبل‬ ‫لسه‬
‫زبان‬ ‫به‬ ‫که‬ ‫را‬c++‫داخل‬ ‫را‬ ‫اند‬ ‫بوده‬Keil‫بنویسیم‬:
• #include “LPC23xx.h”
• #include “highghui.h”
• #include “cv.h”
• /* Continue */
Lecture 2 : Page 3
‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬
‫اول‬ ‫دلیل‬:
‫های‬ ‫فایل‬OpenCv‫داخل‬Keil‫نیستند‬ ‫شده‬ ‫شناخته‬.
‫داخل‬ ‫حتی‬ ‫ما‬VisualStudio‫نمائیم‬ ‫اضافه‬ ‫را‬ ‫کتابخانه‬ ‫این‬ ‫ابتدا‬ ‫که‬ ‫مجبوریم‬ ‫هم‬.
Lecture 2 : Page 4
‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬
‫دوم‬ ‫دلیل‬:
‫گرامر‬Keil‫با‬VisualStudio‫فایلهای‬ ‫همچون‬ ‫هایی‬ ‫فایل‬ ‫از‬ ‫تواند‬ ‫نمی‬ ‫و‬ ‫کند‬ ‫می‬ ‫فرق‬
lib‫برای‬ ‫که‬VisualStudio‫نماید‬ ‫پشتیبانی‬ ‫اند‬ ‫شده‬ ‫نوشته‬.
Lecture 2 : Page 5
‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬
‫سوم‬ ‫دلیل‬:
‫کامپایلر‬Keil‫زبان‬ ‫تواند‬ ‫نمی‬C++، ‫نماید‬ ‫پشتیبانی‬ ‫آنرا‬ ‫های‬ ‫ویژگی‬ ‫و‬
‫که‬ ‫است‬ ‫حالی‬ ‫در‬ ‫این‬ ‫و‬OpenCv‫زبان‬ ‫به‬C++‫بوده‬.
Lecture 2 : Page 6
‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬
‫چهارم‬ ‫دلیل‬:
‫ویندوز‬ ‫ها‬ ‫فایل‬ ‫به‬ ‫یکدیگر‬ ‫به‬ ‫وابستگی‬ ‫بر‬ ‫عالوه‬ ‫کتابخانه‬ ‫این‬ ‫های‬ ‫فایل‬(‫سیس‬‫عامل‬ ‫تم‬)
‫اند‬ ‫وابسته‬.
Lecture 2 : Page 7
‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬
‫پنجم‬ ‫دلیل‬:
‫سایر‬ ‫همراه‬ ‫به‬ ‫کتابخانه‬ ‫این‬ ‫های‬ ‫فایل‬‫های‬ ‫فایل‬‫هس‬ ‫باالیی‬ ‫حجم‬ ‫دارای‬ ‫نیازش‬ ‫مورد‬‫تند‬.
‫کامپایلر‬ ‫در‬Keil‫را‬ ‫فایل‬ ‫یک‬ ‫اگر‬Include‫ن‬ ‫در‬ ‫ننمائیم‬ ‫ای‬ ‫استفاده‬ ‫هیچ‬ ‫آن‬ ‫از‬ ‫و‬ ‫نمائیم‬‫ظر‬
‫د‬ ‫آنرا‬ ‫محتویات‬ ‫تمام‬ ‫شود‬ ‫آن‬ ‫از‬ ‫ای‬ ‫استفاده‬ ‫کوچکترین‬ ‫اگر‬ ‫لی‬ ‫و‬ ‫شود‬ ‫نمی‬ ‫گرفته‬‫فایل‬ ‫ر‬
‫دهد‬ ‫می‬ ‫قرار‬ ‫خروجی‬!!!
Lecture 2 : Page 8
‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd:
‫توابع‬Lcd‫نگاه‬ ‫یک‬ ‫در‬:
Lecture 2 : Page 9
‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd:
‫است‬ ‫عکس‬ ‫نمایش‬ ‫به‬ ‫مربوط‬ ‫آن‬ ‫توابع‬ ‫ترین‬ ‫مهم‬ ‫از‬ ‫یکی‬:
void tftlcd_write_pic(int x0,int y0,const unsigned short *pointer)
‫عکس‬ ‫خود‬ ‫ّا‬‫م‬‫ا‬ ‫و‬:‫فایل‬ ‫یک‬.h‫بوده‬:
const unsigned short image0[] = {
240,320,
0x768A,0x764A,0x6E28,0x5548,0x45AA,0x5D88,0x5DA7,0x65A9,
0x65AA,0x6E27,
//Continue ....
}
Lecture 2 : Page 10
‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd:
‫و‬‫ّا‬‫م‬‫ا‬‫یک‬‫عکس‬‫چگونه‬‫به‬‫فایل‬.h‫تبدیل‬‫شده‬‫است‬:
‫کافی‬‫است‬‫که‬‫یک‬‫آرایه‬‫از‬‫نوع‬const unsigned short‫ایجاد‬‫نموده‬‫و‬‫سپس‬‫طول‬‫و‬
‫عرض‬‫عکس‬‫را‬‫در‬‫آن‬‫قرار‬‫دهیم‬،‫و‬‫پعد‬‫از‬‫آن‬‫عکس‬‫مورد‬‫نظر‬‫را‬‫که‬‫اندازه‬‫آن‬‫مناسب‬
‫صفحه‬‫نمایشمان‬‫بوده‬‫را‬‫پیمایش‬‫نموده‬‫و‬‫هر‬‫پیکسل‬‫را‬‫به‬‫کد‬Hex‫تبدیل‬‫نموده‬‫و‬‫در‬
‫آرایه‬‫قرار‬‫دهیم‬.
‫برنامه‬ArGroup‫سورس‬ ‫که‬C#
‫شد‬ ‫داده‬ ‫تحویلتان‬ ‫پیش‬ ‫جلسه‬ ‫آن‬
‫فایل‬ ‫به‬ ‫عکس‬ ‫تبدیل‬ ‫توانایی‬Hex‫دارد‬ ‫را‬ ‫بلعکس‬ ‫و‬.
Lecture 2 : Page 11
‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd:
‫نحوه‬‫تبدیل‬‫رنگ‬‫یک‬‫پیکسل‬‫به‬‫فایل‬Hex:24‫بیتی‬:‫هر‬‫رنگ‬8‫بیت‬:
‫کافی‬‫است‬‫که‬R‫و‬G‫و‬B‫یک‬‫پیکسل‬‫را‬‫پشت‬‫سر‬‫هم‬‫بذاریم‬
‫مثال‬ً:Color(R=41,G=100,B=9):
R/8b
G/8b
B/8b
Color
/24b
41 => 0x29
100 => 0x64
9 => 0x09
0x296409
Lecture 2 : Page 12
‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd:
‫نحوه‬‫تبدیل‬‫رنگ‬‫یک‬‫پیکسل‬‫به‬‫فایل‬Hex:16‫بیتی‬
‫کافی‬‫است‬‫که‬R‫و‬G‫و‬B‫یک‬‫پیکسل‬‫را‬‫پشت‬‫سر‬‫هم‬‫بذاریم‬
‫مثال‬ً:Color(R=41,G=100,B=9):
41 => 00101001 b
100 => 01100100 b
9 => 00001001 b
0010101100100001b
0x2B21
Lecture 2 : Page 13
R/5b
G/6b
B/5b
Color
/16b
‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd:
‫رنگها‬‫در‬tft Lcd:
Lecture 2 : Page 14
tftlcd_functions.h
#define RED 0x001F
#define GREEN 0x07E0
#define BLUE 0xF800
0000000000011111
0000011111100000
1111100000000000
Mode BGR
‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd:
‫تبدیل‬‫عکس‬‫به‬‫فایل‬Hex‫و‬‫بلکعس‬‫با‬‫برنامه‬ArGroup:
Lecture 2 : Page 15
‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd:
‫تنظیمات‬‫تبدیل‬‫عکس‬‫به‬‫فایل‬Hex‫و‬‫بلکعس‬‫برنامه‬ArGroup:
Lecture 2 : Page 16
‫کد‬ ‫تبدیل‬ ‫متد‬Hex‫رنگ‬ ‫به‬:
public static Color ArCvShortToColor(int color, ArCvColorMode Mode)
{
int R, G, B;
switch (Mode)
{ //…
case ArCvColorMode.Rbg:
R = (color & 63488) / 256;
B = (color & 2016) / 8;
G = (color & 31) * 8;
break; /* Continue */
Lecture 2 : Page 18
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫مبنای‬Arm:
‫برای‬‫پردازش‬‫تصویر‬‫روی‬Arm‫کافی‬‫است‬‫که‬‫یک‬‫عکس‬‫را‬‫به‬‫کد‬Hex‫تبدیل‬‫و‬‫روی‬Arm
‫ذخیره‬‫نموده‬‫و‬‫سپس‬‫با‬‫پیمایش‬‫نمودن‬‫وبدست‬‫آوردن‬R‫و‬G‫و‬B‫هر‬‫پیکسل‬‫آنرا‬‫پردازش‬
‫نموده‬.
‫ّا‬‫م‬‫ا‬‫چگونه‬‫رنگ‬‫و‬...‫را‬‫تعریف‬‫نمائیم‬‫و‬‫کدهایمان‬‫را‬‫در‬Keil‫بنویسیم‬‫؟‬
Lecture 2 : Page 19
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫برای‬‫تعریف‬‫نمودن‬‫رنگ‬‫باید‬‫یک‬‫ساختار‬‫تعریف‬‫نمائیم‬:
struct ArCv_Color
{
int Red;
int Green;
int Blue;
};
Keil
typedef struct
{
int Red;
int Green;
int Blue;
}
ArCv_Color;
Lecture 2 : Page 20
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫متد‬‫ایجاد‬‫یک‬‫رنگ‬‫بر‬‫اساس‬‫مشخصه‬‫های‬R‫و‬G‫و‬B:
ArCv_Color New_ArCv_Color(int R , int G , int B)
{
ArCv_Color Color;
if(R<0) R=0;
if(G<0) G=0;
if(B<0) B=0;
if(R>255) R=255;
if(G>255) G=255;
if(B>255) B=255;
Color.Red=R;
Color.Green=G;
Color.Blue=B;
return Color;
};
Lecture 2 : Page 21
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫متد‬‫تبدیل‬‫یک‬‫رنگ‬‫به‬‫کد‬Hex:
#define ArCv_Error -1
int ArCv_Convert_ColorToRgbCode(ArCv_Color* Color)
{
if(Color)
{
int Rgb = Color->Blue / 8;
Rgb *= 64;
Rgb |= Color->Green / 4;
Rgb *= 32;
Rgb |= Color->Red / 8;
return Rgb;
}
return ArCv_Error;
}
Lecture 2 : Page 22
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫متد‬‫تبدیل‬‫کد‬‫رنگ‬‫به‬‫رنگ‬:
ArCv_Color ArCv_Convert_ShortToColor(int Rgb)
{
return New_ArCv_Color((Rgb & 31) * 8,(Rgb & 2016) / 8,(Rgb & 63488) / 256);
//return New_ArCv_Color((Rgb & 0x1F) * 8,(Rgb & 0x7E0) / 8,(Rgb & 0xF800) / 256);
}
Lecture 2 : Page 23
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫تعریف‬‫ساختاری‬‫برای‬‫طیف‬‫رنگ‬:
typedef struct
{
ArCv_Color Start;
ArCv_Color End;
}
ArCv_ColorRange;
Lecture 2 : Page 24
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫تعریف‬‫متدی‬‫برای‬‫ایجاد‬‫نمودن‬‫یک‬‫طیف‬‫رنگ‬:
ArCv_ColorRange New_ArCv_ColorRange(int R1,int G1,int B1,
int R2,int G2,int B2)
{
ArCv_ColorRange Range;
Range.Start.Red=R1;
Range.Start.Green=G1;
Range.Start.Blue=B1;
Range.End.Red=R2;
Range.End.Green=G2;
Range.End.Blue=B2;
return Range;
}
Lecture 2 : Page 25
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫تعریف‬‫ساختاری‬‫برای‬‫عکس‬:
typedef struct
{
const unsigned short *imageData;
}
ArCv_Image;
Lecture 2 : Page 26
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫تعریف‬‫متدی‬‫برای‬‫ایجاد‬‫عکس‬:
ArCv_Image New_ArCv_Image(const unsigned short * Img)
{
ArCv_Image Image;
Image.imageData=Img;
return Image;
}
Lecture 2 : Page 27
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫متد‬‫خواندن‬‫طول‬‫عکس‬:
int ArCv_Image_Width(ArCv_Image Image)
{
if(&Image)
{
return Image.imageData[0];
}
return ArCv_Error;
}
Lecture 2 : Page 28
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫متد‬‫خواندن‬‫عرض‬‫عکس‬:
int ArCv_Image_Height(ArCv_Image Image)
{
if(&Image)
{
return Image.imageData[1];
}
return ArCv_Error;
}
Lecture 2 : Page 29
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫متد‬‫خواندن‬‫کد‬‫رنگ‬‫یک‬‫پیکسل‬‫از‬‫عکس‬:
int ArCv_Image_GetRgbCode(ArCv_Image Image , int x , int y)
{
return Image.imageData[(y*Image.imageData[1])+x+2];
}
Lecture 2 : Page 30
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm:
‫متد‬‫خواندن‬‫رنگ‬‫یک‬‫پیکسل‬‫از‬‫عکس‬:
ArCv_Color ArCv_Image_GetColor(ArCv_Image Image , int x , int y)
{
if(&Image)
{
return ArCv_Convert_ShortToColor(Image.imageData[(y*Image.imageData[0])+x+2]);
}
else
{
return ArCv_Null_Color;
}
}
Lecture 2 : Page 31
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫سفید‬ ‫و‬ ‫سیاه‬:‫یک‬
void ArCv_Filter_BW_R(ArCv_Image Image)
{
ArCv_Color Color,c;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
c=New_ArCv_Color(Color.Red,Color.Red,Color.Red);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 33
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫سفید‬ ‫و‬ ‫سیاه‬:‫دو‬
void ArCv_Filter_BW_G(ArCv_Image Image)
{
ArCv_Color Color,c;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
c=New_ArCv_Color(Color.Green,Color.Green,Color.Green);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 35
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫سفید‬ ‫و‬ ‫سیاه‬:‫سه‬
void ArCv_Filter_BW_B(ArCv_Image Image)
{
ArCv_Color Color,c;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
c=New_ArCv_Color(Color.Blue,Color.Blue,Color.Blue);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 37
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نمودن‬ ‫مکمل‬
void ArCv_Filter_Inverse(ArCv_Image Image)
{
ArCv_Color Color,c;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
c=New_ArCv_Color(255-Color.Red,255-Color.Green,255-Color.Blue);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 40
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫رنگی‬ ‫های‬ ‫مشخه‬ ‫تغییر‬
void ArCv_Filter_ChangeTo_GBR(ArCv_Image Image)
{
ArCv_Color Color,c;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
c=New_ArCv_Color(Color.Green,Color.Blue,Color.Red);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 42
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫یک‬
void ArCv_Filter_Contrast(ArCv_Image Image,int Co)
{
ArCv_Color Color,c;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
c=New_ArCv_Color(Color.Red+Co,Color.Green+Co,Color.Blue+Co);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 44
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫دو‬
void ArCv_Filter_Contrast_RGB(ArCv_Image Image,int CoR,int CoG,int CoB)
{
ArCv_Color Color,c;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
c=New_ArCv_Color(Color.Red+CoR,Color.Green+CoG,Color.Blue+CoB);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 45
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫سه‬
void ArCv_Filter_Contrast_Range(ArCv_Image Image,int Low,int High,int CoR,int CoG,int CoB)
{
ArCv_Color Color,c;
int i,j;
int v;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
v=(Color.Red+Color.Green+Color.Blue)/3;
if( v >= Low && v<=High)
{
c=New_ArCv_Color(Color.Red+CoR,Color.Green+CoG,Color.Blue+CoB);
}
Lecture 2 : Page 46
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫سه‬
else
{
c=New_ArCv_Color(Color.Red,Color.Green,Color.Blue);
}
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 47
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫چهار‬
void ArCv_Filter_Contrast_Range_RGB(ArCv_Image Image,int Low,int High,int Co)
{
ArCv_Color Color,c;
int i,j;
int v;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
v=(Color.Red+Color.Green+Color.Blue)/3;
if( v >= Low && v<=High)
{
c=New_ArCv_Color(Color.Red+Co,Color.Green+Co,Color.Blue+Co);
}
Lecture 2 : Page 48
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫چهار‬
else
{
c=New_ArCv_Color(Color.Red,Color.Green,Color.Blue);
}
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 49
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫ای‬ ‫قهوه‬ ‫و‬ ‫قرمز‬
void ArCv_Filter_ColorTone_Sepia(ArCv_Image Image)
{
ArCv_Color Color,c;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
c=New_ArCv_Color(((Color.Red + Color.Green + Color.Blue) / 3) +40 ,
((Color.Red + Color.Green + Color.Blue) / 3) -10 ,
((Color.Red + Color.Green + Color.Blue) / 3) -70);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 51
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:16‫نمودن‬ ‫رنگی‬
void ArCv_Filter_ColorTone_16Color(ArCv_Image Image)
{
ArCv_Color Color,c;
int i,j,r,g,b;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
r=Color.Red;
g=Color.Green;
b=Color.Blue;
Lecture 2 : Page 53
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:16‫نمودن‬ ‫رنگی‬
if (r > 0 && r < 128) r = 0;
else if (r > 128 && r < 192) r = 128;
else if (r > 192 && r < 255) r = 192;
if (g > 0 && g < 128) g = 0;
else if (g > 128 && g < 192) g = 128;
else if (g > 192 && g < 255) g = 192;
if (b > 0 && b < 128) b = 0;
else if (b > 128 && b < 192) b = 128;
else if (b > 192 && b < 255) b = 192;
c=New_ArCv_Color(r,g,b);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 54
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫تصویر‬ ‫نمودن‬ ‫تار‬
void ArCv_Filter_Blur(ArCv_Image Image,int VcI,int VcJ)
{
ArCv_Color Color,c,c1;
int i,j;
for(i=VcI;i<ArCv_Image_Width(Image);i++)
{
for(j=VcJ;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
c1 = ArCv_Image_GetColor(Image,i-VcI,j-VcJ);
c=New_ArCv_Color((Color.Red+c1.Red)/2,(Color.Green+c1.Green)/2,(Color.Blue+c1.Blue)/2);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
}
}
}
Lecture 2 : Page 56
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫یک‬
#define IsFound 1
#define NotFound 0
int ArCv_Detection_ColorDetection(ArCv_Image Image,ArCv_Color StartRange,ArCv_Color EndRange,int x,int y)
{
ArCv_Color Color = ArCv_Image_GetColor(Image,x,y);
if(Color.Red >= StartRange.Red && Color.Red <= EndRange.Red
&& Color.Green >= StartRange.Green && Color.Green <= EndRange.Green
&& Color.Blue >= StartRange.Blue && Color.Blue <= EndRange.Blue)
{
return IsFound;
}
return NotFound;
}
Lecture 2 : Page 57
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫دو‬
int ArCv_Detection_RangeColorDetection(ArCv_Image Image,ArCv_ColorRange Range,int x,int y)
{
ArCv_Color Color = ArCv_Image_GetColor(Image,x,y);
if(Color.Red >= Range.Start.Red && Color.Red <= Range.End.Red
&& Color.Green >= Range.Start.Green && Color.Green <= Range.End.Green
&& Color.Blue >= Range.Start.Blue && Color.Blue <= Range.End.Blue)
{
return IsFound;
}
return NotFound;
}
Lecture 2 : Page 58
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫سه‬
int ArCv_Detection_FindRangeColorDetection(ArCv_Image Image,ArCv_ColorRange Range)
{
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
if(ArCv_Detection_RangeColorDetection(Image,Range,i,j)==IsFound)
{
return IsFound;
}
}
}
return NotFound;
}
Lecture 2 : Page 59
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫چهار‬
int ArCv_Detection_AllFindRangeColorDetection(ArCv_Image Image,ArCv_ColorRange Range,ArCv_Color NewColor)
{
int flag=NotFound;
ArCv_Color Color;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
if(Color.Red >= Range.Start.Red && Color.Red <= Range.End.Red
&& Color.Green >= Range.Start.Green && Color.Green <= Range.End.Green
&& Color.Blue >= Range.Start.Blue && Color.Blue <= Range.End.Blue)
{
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&NewColor));
flag=IsFound;
}
}
}
return flag;
}
Lecture 2 : Page 60
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫پنج‬
int ArCv_Detection_AllFindRangeColorDetection_Inverse(ArCv_Image Image,ArCv_ColorRange Range)
{
int flag=NotFound;
ArCv_Color Color,c;
int i,j;
for(i=0;i<ArCv_Image_Width(Image);i++)
{
for(j=0;j<ArCv_Image_Height(Image);j++)
{
Color = ArCv_Image_GetColor(Image,i,j);
if(Color.Red >= Range.Start.Red && Color.Red <= Range.End.Red
&& Color.Green >= Range.Start.Green && Color.Green <= Range.End.Green
&& Color.Blue >= Range.Start.Blue && Color.Blue <= Range.End.Blue)
Lecture 2 : Page 61
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫پنج‬
{
c=New_ArCv_Color(255-Color.Red,255-Color.Green,255-Color.Blue);
tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c));
flag=IsFound;
}
}
}
return flag;
}
Lecture 2 : Page 62
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫یابی‬ ‫لبه‬
void ArCv_Detection_Edge(ArCv_Image Image,int Vc)
{
int i,j;
ArCv_Color c,c1;
tftlcd_fill(0x0);
for(i=0;i<ArCv_Image_Height(Image)-1;i++)
{
for(j=0;j<ArCv_Image_Width(Image)-1;j++)
{
c=ArCv_Image_GetColor(Image,i,j);
c1=ArCv_Image_GetColor(Image,i,j+1);
if(c.Red>c1.Red+Vc || c1.Red>c.Red+Vc ||
c.Green>c1.Green+Vc || c1.Green>c.Green+Vc ||
c.Blue>c1.Blue+Vc || c1.Blue>c.Blue+Vc )
Lecture 2 : Page 64
‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫یابی‬ ‫لبه‬
{
tftlcd_write_pixel(i,j,0xFFFF);
continue;
}
c1=ArCv_Image_GetColor(Image,i+1,j);
if(c.Red>c1.Red+Vc || c1.Red>c.Red+Vc ||
c.Green>c1.Green+Vc || c1.Green>c.Green+Vc ||
c.Blue>c1.Blue+Vc || c1.Blue>c.Blue+Vc )
{
tftlcd_write_pixel(i,j,0xFFFF);
}
}
}
}
Lecture 2 : Page 65
‫آینده‬ ‫جلسه‬ ‫تا‬:
‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫کدهای‬ ‫با‬ ‫کردن‬ ‫کار‬Arm‫آنها‬ ‫وتصحیح‬
‫با‬ ‫کردن‬ ‫کار‬tftLcd
‫آن‬ ‫کدهای‬ ‫بهبود‬ ‫و‬ ‫تصویر‬ ‫پردازش‬ ‫سرعت‬ ‫باالبردن‬ ‫چگونگی‬ ‫مورد‬ ‫در‬ ‫تحقیق‬
Lecture 2 : Page 66
‫آینده‬ ‫جلسات‬ ‫در‬:
‫تصویر‬ ‫پردازش‬ ‫سرعت‬ ‫افزایش‬ ‫چگونگی‬
‫و‬ ‫دوربین‬ ‫همانند‬ ‫جنبی‬ ‫دستگاه‬ ‫یک‬ ‫از‬ ‫که‬ ‫اطالعاتی‬ ‫و‬ ‫عکس‬ ‫پردازش‬ ‫چگونگی‬FingerPrint
‫آید‬ ‫می‬ ‫بدست‬
‫روی‬ ‫عامل‬ ‫سیستم‬ ‫نصب‬Arm
‫نویسی‬ ‫ماژوالر‬ ‫و‬ ‫نویسی‬ ‫هدر‬
‫پالس‬ ‫پالس‬ ‫سی‬ ‫و‬ ‫شارپ‬ ‫سی‬ ‫در‬ ‫سریال‬ ‫پورت‬ ‫با‬ ‫کردن‬ ‫کار‬
‫طریق‬ ‫از‬ ‫کامپیوتر‬ ‫و‬ ‫میکروکنترلر‬ ‫ارتباط‬uart
Lecture 2 : Page 67
‫؟‬ ‫سواالت‬
‫؟‬ ‫آینده‬ ‫جلسه‬
‫؟‬ ‫ارائه‬ ‫نحوه‬ ‫و‬ ‫مطالب‬ ‫شیوه‬
Lecture 2 : Page 68
‫ّا‬‫م‬‫ا‬ ‫و‬....
Lecture 2 : Page 69

More Related Content

Similar to Lecture2

Similar to Lecture2 (20)

سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گراییسی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
 
Mohamady zahedy c#
Mohamady zahedy c#Mohamady zahedy c#
Mohamady zahedy c#
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
HEVC Seminar,zamanian
HEVC Seminar,zamanianHEVC Seminar,zamanian
HEVC Seminar,zamanian
 
Jozve c#2 mohamady_zahedy
Jozve c#2 mohamady_zahedyJozve c#2 mohamady_zahedy
Jozve c#2 mohamady_zahedy
 
چرا نود.جی اس؟
چرا نود.جی اس؟چرا نود.جی اس؟
چرا نود.جی اس؟
 
MIPS and QtSpim
MIPS and QtSpimMIPS and QtSpim
MIPS and QtSpim
 
Pdn tech-v mware-convert-pvmos
Pdn tech-v mware-convert-pvmosPdn tech-v mware-convert-pvmos
Pdn tech-v mware-convert-pvmos
 
C++
C++C++
C++
 
C++
C++C++
C++
 
Documention
DocumentionDocumention
Documention
 
MongoDB
MongoDBMongoDB
MongoDB
 
آشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندرویدآشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندروید
 
پیش مقدمه آموزش نرم افزار متلب
پیش مقدمه آموزش نرم افزار متلبپیش مقدمه آموزش نرم افزار متلب
پیش مقدمه آموزش نرم افزار متلب
 
Az Micro
Az MicroAz Micro
Az Micro
 
Odbc in linux
Odbc in linux Odbc in linux
Odbc in linux
 
How Create Waf With Naxsi
How Create Waf With NaxsiHow Create Waf With Naxsi
How Create Waf With Naxsi
 
lunch box plugin
 lunch box plugin  lunch box plugin
lunch box plugin
 

More from Mohammad Amin Amjadi (15)

Seminar-Parallel Processing
Seminar-Parallel ProcessingSeminar-Parallel Processing
Seminar-Parallel Processing
 
Seminar-Architecture
Seminar-ArchitectureSeminar-Architecture
Seminar-Architecture
 
Image Cryptography and Steganography
Image Cryptography and SteganographyImage Cryptography and Steganography
Image Cryptography and Steganography
 
memetic algorithm
memetic algorithmmemetic algorithm
memetic algorithm
 
Amjadi - Ebook 7 - Class - v1
Amjadi - Ebook 7 - Class - v1Amjadi - Ebook 7 - Class - v1
Amjadi - Ebook 7 - Class - v1
 
Amjadi - Ebook 6 - Ref,Out - v1
Amjadi - Ebook 6 - Ref,Out - v1Amjadi - Ebook 6 - Ref,Out - v1
Amjadi - Ebook 6 - Ref,Out - v1
 
Amjadi - Ebook 5 - Function - v1
Amjadi - Ebook 5 - Function - v1Amjadi - Ebook 5 - Function - v1
Amjadi - Ebook 5 - Function - v1
 
my project
my projectmy project
my project
 
Rajabi
RajabiRajabi
Rajabi
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Amjadi
AmjadiAmjadi
Amjadi
 
rivercode.PDF
rivercode.PDFrivercode.PDF
rivercode.PDF
 
HotSpot
HotSpotHotSpot
HotSpot
 
GPGPU
GPGPUGPGPU
GPGPU
 
Lecture3
Lecture3Lecture3
Lecture3
 

Lecture2

  • 1.
  • 2. “ ” Arm Programming & Image Processing Lecture 2 Mohammad Amin Amjadi Computer Department Shahid Bahonar University Fall 2012
  • 3. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm‫از‬ ‫استفاده‬ ‫با‬OpenCv: •‫ج‬ ‫دستورات‬ ‫که‬ ‫است‬ ‫این‬ ، ‫باشد‬ ‫آمده‬ ‫ذهنمان‬ ‫به‬ ‫شاید‬ ‫که‬ ‫راهکارهایی‬ ‫اولین‬ ‫از‬ ‫یکی‬‫قبل‬ ‫لسه‬ ‫زبان‬ ‫به‬ ‫که‬ ‫را‬c++‫داخل‬ ‫را‬ ‫اند‬ ‫بوده‬Keil‫بنویسیم‬: • #include “LPC23xx.h” • #include “highghui.h” • #include “cv.h” • /* Continue */ Lecture 2 : Page 3
  • 4. ‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬ ‫اول‬ ‫دلیل‬: ‫های‬ ‫فایل‬OpenCv‫داخل‬Keil‫نیستند‬ ‫شده‬ ‫شناخته‬. ‫داخل‬ ‫حتی‬ ‫ما‬VisualStudio‫نمائیم‬ ‫اضافه‬ ‫را‬ ‫کتابخانه‬ ‫این‬ ‫ابتدا‬ ‫که‬ ‫مجبوریم‬ ‫هم‬. Lecture 2 : Page 4
  • 5. ‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬ ‫دوم‬ ‫دلیل‬: ‫گرامر‬Keil‫با‬VisualStudio‫فایلهای‬ ‫همچون‬ ‫هایی‬ ‫فایل‬ ‫از‬ ‫تواند‬ ‫نمی‬ ‫و‬ ‫کند‬ ‫می‬ ‫فرق‬ lib‫برای‬ ‫که‬VisualStudio‫نماید‬ ‫پشتیبانی‬ ‫اند‬ ‫شده‬ ‫نوشته‬. Lecture 2 : Page 5
  • 6. ‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬ ‫سوم‬ ‫دلیل‬: ‫کامپایلر‬Keil‫زبان‬ ‫تواند‬ ‫نمی‬C++، ‫نماید‬ ‫پشتیبانی‬ ‫آنرا‬ ‫های‬ ‫ویژگی‬ ‫و‬ ‫که‬ ‫است‬ ‫حالی‬ ‫در‬ ‫این‬ ‫و‬OpenCv‫زبان‬ ‫به‬C++‫بوده‬. Lecture 2 : Page 6
  • 7. ‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬ ‫چهارم‬ ‫دلیل‬: ‫ویندوز‬ ‫ها‬ ‫فایل‬ ‫به‬ ‫یکدیگر‬ ‫به‬ ‫وابستگی‬ ‫بر‬ ‫عالوه‬ ‫کتابخانه‬ ‫این‬ ‫های‬ ‫فایل‬(‫سیس‬‫عامل‬ ‫تم‬) ‫اند‬ ‫وابسته‬. Lecture 2 : Page 7
  • 8. ‫از‬ ‫بدینگونه‬ ‫توان‬ ‫نمی‬ ‫چرا‬OpenCv‫در‬Keil‫نمود؟‬ ‫استفاده‬ ‫پنجم‬ ‫دلیل‬: ‫سایر‬ ‫همراه‬ ‫به‬ ‫کتابخانه‬ ‫این‬ ‫های‬ ‫فایل‬‫های‬ ‫فایل‬‫هس‬ ‫باالیی‬ ‫حجم‬ ‫دارای‬ ‫نیازش‬ ‫مورد‬‫تند‬. ‫کامپایلر‬ ‫در‬Keil‫را‬ ‫فایل‬ ‫یک‬ ‫اگر‬Include‫ن‬ ‫در‬ ‫ننمائیم‬ ‫ای‬ ‫استفاده‬ ‫هیچ‬ ‫آن‬ ‫از‬ ‫و‬ ‫نمائیم‬‫ظر‬ ‫د‬ ‫آنرا‬ ‫محتویات‬ ‫تمام‬ ‫شود‬ ‫آن‬ ‫از‬ ‫ای‬ ‫استفاده‬ ‫کوچکترین‬ ‫اگر‬ ‫لی‬ ‫و‬ ‫شود‬ ‫نمی‬ ‫گرفته‬‫فایل‬ ‫ر‬ ‫دهد‬ ‫می‬ ‫قرار‬ ‫خروجی‬!!! Lecture 2 : Page 8
  • 9. ‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd: ‫توابع‬Lcd‫نگاه‬ ‫یک‬ ‫در‬: Lecture 2 : Page 9
  • 10. ‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd: ‫است‬ ‫عکس‬ ‫نمایش‬ ‫به‬ ‫مربوط‬ ‫آن‬ ‫توابع‬ ‫ترین‬ ‫مهم‬ ‫از‬ ‫یکی‬: void tftlcd_write_pic(int x0,int y0,const unsigned short *pointer) ‫عکس‬ ‫خود‬ ‫ّا‬‫م‬‫ا‬ ‫و‬:‫فایل‬ ‫یک‬.h‫بوده‬: const unsigned short image0[] = { 240,320, 0x768A,0x764A,0x6E28,0x5548,0x45AA,0x5D88,0x5DA7,0x65A9, 0x65AA,0x6E27, //Continue .... } Lecture 2 : Page 10
  • 11. ‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd: ‫و‬‫ّا‬‫م‬‫ا‬‫یک‬‫عکس‬‫چگونه‬‫به‬‫فایل‬.h‫تبدیل‬‫شده‬‫است‬: ‫کافی‬‫است‬‫که‬‫یک‬‫آرایه‬‫از‬‫نوع‬const unsigned short‫ایجاد‬‫نموده‬‫و‬‫سپس‬‫طول‬‫و‬ ‫عرض‬‫عکس‬‫را‬‫در‬‫آن‬‫قرار‬‫دهیم‬،‫و‬‫پعد‬‫از‬‫آن‬‫عکس‬‫مورد‬‫نظر‬‫را‬‫که‬‫اندازه‬‫آن‬‫مناسب‬ ‫صفحه‬‫نمایشمان‬‫بوده‬‫را‬‫پیمایش‬‫نموده‬‫و‬‫هر‬‫پیکسل‬‫را‬‫به‬‫کد‬Hex‫تبدیل‬‫نموده‬‫و‬‫در‬ ‫آرایه‬‫قرار‬‫دهیم‬. ‫برنامه‬ArGroup‫سورس‬ ‫که‬C# ‫شد‬ ‫داده‬ ‫تحویلتان‬ ‫پیش‬ ‫جلسه‬ ‫آن‬ ‫فایل‬ ‫به‬ ‫عکس‬ ‫تبدیل‬ ‫توانایی‬Hex‫دارد‬ ‫را‬ ‫بلعکس‬ ‫و‬. Lecture 2 : Page 11
  • 12. ‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd: ‫نحوه‬‫تبدیل‬‫رنگ‬‫یک‬‫پیکسل‬‫به‬‫فایل‬Hex:24‫بیتی‬:‫هر‬‫رنگ‬8‫بیت‬: ‫کافی‬‫است‬‫که‬R‫و‬G‫و‬B‫یک‬‫پیکسل‬‫را‬‫پشت‬‫سر‬‫هم‬‫بذاریم‬ ‫مثال‬ً:Color(R=41,G=100,B=9): R/8b G/8b B/8b Color /24b 41 => 0x29 100 => 0x64 9 => 0x09 0x296409 Lecture 2 : Page 12
  • 13. ‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd: ‫نحوه‬‫تبدیل‬‫رنگ‬‫یک‬‫پیکسل‬‫به‬‫فایل‬Hex:16‫بیتی‬ ‫کافی‬‫است‬‫که‬R‫و‬G‫و‬B‫یک‬‫پیکسل‬‫را‬‫پشت‬‫سر‬‫هم‬‫بذاریم‬ ‫مثال‬ً:Color(R=41,G=100,B=9): 41 => 00101001 b 100 => 01100100 b 9 => 00001001 b 0010101100100001b 0x2B21 Lecture 2 : Page 13 R/5b G/6b B/5b Color /16b
  • 14. ‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd: ‫رنگها‬‫در‬tft Lcd: Lecture 2 : Page 14 tftlcd_functions.h #define RED 0x001F #define GREEN 0x07E0 #define BLUE 0xF800 0000000000011111 0000011111100000 1111100000000000 Mode BGR
  • 15. ‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd: ‫تبدیل‬‫عکس‬‫به‬‫فایل‬Hex‫و‬‫بلکعس‬‫با‬‫برنامه‬ArGroup: Lecture 2 : Page 15
  • 16. ‫یادگیری‬ ‫با‬ ‫تصویر‬ ‫پردازش‬ ‫مسئله‬ ‫حل‬tft Lcd: ‫تنظیمات‬‫تبدیل‬‫عکس‬‫به‬‫فایل‬Hex‫و‬‫بلکعس‬‫برنامه‬ArGroup: Lecture 2 : Page 16
  • 17.
  • 18. ‫کد‬ ‫تبدیل‬ ‫متد‬Hex‫رنگ‬ ‫به‬: public static Color ArCvShortToColor(int color, ArCvColorMode Mode) { int R, G, B; switch (Mode) { //… case ArCvColorMode.Rbg: R = (color & 63488) / 256; B = (color & 2016) / 8; G = (color & 31) * 8; break; /* Continue */ Lecture 2 : Page 18
  • 19. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫مبنای‬Arm: ‫برای‬‫پردازش‬‫تصویر‬‫روی‬Arm‫کافی‬‫است‬‫که‬‫یک‬‫عکس‬‫را‬‫به‬‫کد‬Hex‫تبدیل‬‫و‬‫روی‬Arm ‫ذخیره‬‫نموده‬‫و‬‫سپس‬‫با‬‫پیمایش‬‫نمودن‬‫وبدست‬‫آوردن‬R‫و‬G‫و‬B‫هر‬‫پیکسل‬‫آنرا‬‫پردازش‬ ‫نموده‬. ‫ّا‬‫م‬‫ا‬‫چگونه‬‫رنگ‬‫و‬...‫را‬‫تعریف‬‫نمائیم‬‫و‬‫کدهایمان‬‫را‬‫در‬Keil‫بنویسیم‬‫؟‬ Lecture 2 : Page 19
  • 20. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫برای‬‫تعریف‬‫نمودن‬‫رنگ‬‫باید‬‫یک‬‫ساختار‬‫تعریف‬‫نمائیم‬: struct ArCv_Color { int Red; int Green; int Blue; }; Keil typedef struct { int Red; int Green; int Blue; } ArCv_Color; Lecture 2 : Page 20
  • 21. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫متد‬‫ایجاد‬‫یک‬‫رنگ‬‫بر‬‫اساس‬‫مشخصه‬‫های‬R‫و‬G‫و‬B: ArCv_Color New_ArCv_Color(int R , int G , int B) { ArCv_Color Color; if(R<0) R=0; if(G<0) G=0; if(B<0) B=0; if(R>255) R=255; if(G>255) G=255; if(B>255) B=255; Color.Red=R; Color.Green=G; Color.Blue=B; return Color; }; Lecture 2 : Page 21
  • 22. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫متد‬‫تبدیل‬‫یک‬‫رنگ‬‫به‬‫کد‬Hex: #define ArCv_Error -1 int ArCv_Convert_ColorToRgbCode(ArCv_Color* Color) { if(Color) { int Rgb = Color->Blue / 8; Rgb *= 64; Rgb |= Color->Green / 4; Rgb *= 32; Rgb |= Color->Red / 8; return Rgb; } return ArCv_Error; } Lecture 2 : Page 22
  • 23. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫متد‬‫تبدیل‬‫کد‬‫رنگ‬‫به‬‫رنگ‬: ArCv_Color ArCv_Convert_ShortToColor(int Rgb) { return New_ArCv_Color((Rgb & 31) * 8,(Rgb & 2016) / 8,(Rgb & 63488) / 256); //return New_ArCv_Color((Rgb & 0x1F) * 8,(Rgb & 0x7E0) / 8,(Rgb & 0xF800) / 256); } Lecture 2 : Page 23
  • 24. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫تعریف‬‫ساختاری‬‫برای‬‫طیف‬‫رنگ‬: typedef struct { ArCv_Color Start; ArCv_Color End; } ArCv_ColorRange; Lecture 2 : Page 24
  • 25. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫تعریف‬‫متدی‬‫برای‬‫ایجاد‬‫نمودن‬‫یک‬‫طیف‬‫رنگ‬: ArCv_ColorRange New_ArCv_ColorRange(int R1,int G1,int B1, int R2,int G2,int B2) { ArCv_ColorRange Range; Range.Start.Red=R1; Range.Start.Green=G1; Range.Start.Blue=B1; Range.End.Red=R2; Range.End.Green=G2; Range.End.Blue=B2; return Range; } Lecture 2 : Page 25
  • 26. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫تعریف‬‫ساختاری‬‫برای‬‫عکس‬: typedef struct { const unsigned short *imageData; } ArCv_Image; Lecture 2 : Page 26
  • 27. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫تعریف‬‫متدی‬‫برای‬‫ایجاد‬‫عکس‬: ArCv_Image New_ArCv_Image(const unsigned short * Img) { ArCv_Image Image; Image.imageData=Img; return Image; } Lecture 2 : Page 27
  • 28. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫متد‬‫خواندن‬‫طول‬‫عکس‬: int ArCv_Image_Width(ArCv_Image Image) { if(&Image) { return Image.imageData[0]; } return ArCv_Error; } Lecture 2 : Page 28
  • 29. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫متد‬‫خواندن‬‫عرض‬‫عکس‬: int ArCv_Image_Height(ArCv_Image Image) { if(&Image) { return Image.imageData[1]; } return ArCv_Error; } Lecture 2 : Page 29
  • 30. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫متد‬‫خواندن‬‫کد‬‫رنگ‬‫یک‬‫پیکسل‬‫از‬‫عکس‬: int ArCv_Image_GetRgbCode(ArCv_Image Image , int x , int y) { return Image.imageData[(y*Image.imageData[1])+x+2]; } Lecture 2 : Page 30
  • 31. ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫برای‬ ‫نویسی‬ ‫برنامه‬Arm: ‫متد‬‫خواندن‬‫رنگ‬‫یک‬‫پیکسل‬‫از‬‫عکس‬: ArCv_Color ArCv_Image_GetColor(ArCv_Image Image , int x , int y) { if(&Image) { return ArCv_Convert_ShortToColor(Image.imageData[(y*Image.imageData[0])+x+2]); } else { return ArCv_Null_Color; } } Lecture 2 : Page 31
  • 32.
  • 33. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫سفید‬ ‫و‬ ‫سیاه‬:‫یک‬ void ArCv_Filter_BW_R(ArCv_Image Image) { ArCv_Color Color,c; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); c=New_ArCv_Color(Color.Red,Color.Red,Color.Red); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 33
  • 34.
  • 35. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫سفید‬ ‫و‬ ‫سیاه‬:‫دو‬ void ArCv_Filter_BW_G(ArCv_Image Image) { ArCv_Color Color,c; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); c=New_ArCv_Color(Color.Green,Color.Green,Color.Green); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 35
  • 36.
  • 37. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫سفید‬ ‫و‬ ‫سیاه‬:‫سه‬ void ArCv_Filter_BW_B(ArCv_Image Image) { ArCv_Color Color,c; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); c=New_ArCv_Color(Color.Blue,Color.Blue,Color.Blue); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 37
  • 38.
  • 39.
  • 40. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نمودن‬ ‫مکمل‬ void ArCv_Filter_Inverse(ArCv_Image Image) { ArCv_Color Color,c; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); c=New_ArCv_Color(255-Color.Red,255-Color.Green,255-Color.Blue); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 40
  • 41.
  • 42. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫رنگی‬ ‫های‬ ‫مشخه‬ ‫تغییر‬ void ArCv_Filter_ChangeTo_GBR(ArCv_Image Image) { ArCv_Color Color,c; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); c=New_ArCv_Color(Color.Green,Color.Blue,Color.Red); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 42
  • 43.
  • 44. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫یک‬ void ArCv_Filter_Contrast(ArCv_Image Image,int Co) { ArCv_Color Color,c; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); c=New_ArCv_Color(Color.Red+Co,Color.Green+Co,Color.Blue+Co); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 44
  • 45. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫دو‬ void ArCv_Filter_Contrast_RGB(ArCv_Image Image,int CoR,int CoG,int CoB) { ArCv_Color Color,c; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); c=New_ArCv_Color(Color.Red+CoR,Color.Green+CoG,Color.Blue+CoB); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 45
  • 46. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫سه‬ void ArCv_Filter_Contrast_Range(ArCv_Image Image,int Low,int High,int CoR,int CoG,int CoB) { ArCv_Color Color,c; int i,j; int v; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); v=(Color.Red+Color.Green+Color.Blue)/3; if( v >= Low && v<=High) { c=New_ArCv_Color(Color.Red+CoR,Color.Green+CoG,Color.Blue+CoB); } Lecture 2 : Page 46
  • 47. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫سه‬ else { c=New_ArCv_Color(Color.Red,Color.Green,Color.Blue); } tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 47
  • 48. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫چهار‬ void ArCv_Filter_Contrast_Range_RGB(ArCv_Image Image,int Low,int High,int Co) { ArCv_Color Color,c; int i,j; int v; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); v=(Color.Red+Color.Green+Color.Blue)/3; if( v >= Low && v<=High) { c=New_ArCv_Color(Color.Red+Co,Color.Green+Co,Color.Blue+Co); } Lecture 2 : Page 48
  • 49. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫نور‬ ‫شدت‬ ‫تغییر‬:‫چهار‬ else { c=New_ArCv_Color(Color.Red,Color.Green,Color.Blue); } tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 49
  • 50.
  • 51. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫ای‬ ‫قهوه‬ ‫و‬ ‫قرمز‬ void ArCv_Filter_ColorTone_Sepia(ArCv_Image Image) { ArCv_Color Color,c; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); c=New_ArCv_Color(((Color.Red + Color.Green + Color.Blue) / 3) +40 , ((Color.Red + Color.Green + Color.Blue) / 3) -10 , ((Color.Red + Color.Green + Color.Blue) / 3) -70); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 51
  • 52.
  • 53. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:16‫نمودن‬ ‫رنگی‬ void ArCv_Filter_ColorTone_16Color(ArCv_Image Image) { ArCv_Color Color,c; int i,j,r,g,b; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); r=Color.Red; g=Color.Green; b=Color.Blue; Lecture 2 : Page 53
  • 54. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:16‫نمودن‬ ‫رنگی‬ if (r > 0 && r < 128) r = 0; else if (r > 128 && r < 192) r = 128; else if (r > 192 && r < 255) r = 192; if (g > 0 && g < 128) g = 0; else if (g > 128 && g < 192) g = 128; else if (g > 192 && g < 255) g = 192; if (b > 0 && b < 128) b = 0; else if (b > 128 && b < 192) b = 128; else if (b > 192 && b < 255) b = 192; c=New_ArCv_Color(r,g,b); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 54
  • 55.
  • 56. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫فیلتر‬:‫تصویر‬ ‫نمودن‬ ‫تار‬ void ArCv_Filter_Blur(ArCv_Image Image,int VcI,int VcJ) { ArCv_Color Color,c,c1; int i,j; for(i=VcI;i<ArCv_Image_Width(Image);i++) { for(j=VcJ;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); c1 = ArCv_Image_GetColor(Image,i-VcI,j-VcJ); c=New_ArCv_Color((Color.Red+c1.Red)/2,(Color.Green+c1.Green)/2,(Color.Blue+c1.Blue)/2); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); } } } Lecture 2 : Page 56
  • 57. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫یک‬ #define IsFound 1 #define NotFound 0 int ArCv_Detection_ColorDetection(ArCv_Image Image,ArCv_Color StartRange,ArCv_Color EndRange,int x,int y) { ArCv_Color Color = ArCv_Image_GetColor(Image,x,y); if(Color.Red >= StartRange.Red && Color.Red <= EndRange.Red && Color.Green >= StartRange.Green && Color.Green <= EndRange.Green && Color.Blue >= StartRange.Blue && Color.Blue <= EndRange.Blue) { return IsFound; } return NotFound; } Lecture 2 : Page 57
  • 58. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫دو‬ int ArCv_Detection_RangeColorDetection(ArCv_Image Image,ArCv_ColorRange Range,int x,int y) { ArCv_Color Color = ArCv_Image_GetColor(Image,x,y); if(Color.Red >= Range.Start.Red && Color.Red <= Range.End.Red && Color.Green >= Range.Start.Green && Color.Green <= Range.End.Green && Color.Blue >= Range.Start.Blue && Color.Blue <= Range.End.Blue) { return IsFound; } return NotFound; } Lecture 2 : Page 58
  • 59. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫سه‬ int ArCv_Detection_FindRangeColorDetection(ArCv_Image Image,ArCv_ColorRange Range) { int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { if(ArCv_Detection_RangeColorDetection(Image,Range,i,j)==IsFound) { return IsFound; } } } return NotFound; } Lecture 2 : Page 59
  • 60. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫چهار‬ int ArCv_Detection_AllFindRangeColorDetection(ArCv_Image Image,ArCv_ColorRange Range,ArCv_Color NewColor) { int flag=NotFound; ArCv_Color Color; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); if(Color.Red >= Range.Start.Red && Color.Red <= Range.End.Red && Color.Green >= Range.Start.Green && Color.Green <= Range.End.Green && Color.Blue >= Range.Start.Blue && Color.Blue <= Range.End.Blue) { tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&NewColor)); flag=IsFound; } } } return flag; } Lecture 2 : Page 60
  • 61. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫پنج‬ int ArCv_Detection_AllFindRangeColorDetection_Inverse(ArCv_Image Image,ArCv_ColorRange Range) { int flag=NotFound; ArCv_Color Color,c; int i,j; for(i=0;i<ArCv_Image_Width(Image);i++) { for(j=0;j<ArCv_Image_Height(Image);j++) { Color = ArCv_Image_GetColor(Image,i,j); if(Color.Red >= Range.Start.Red && Color.Red <= Range.End.Red && Color.Green >= Range.Start.Green && Color.Green <= Range.End.Green && Color.Blue >= Range.Start.Blue && Color.Blue <= Range.End.Blue) Lecture 2 : Page 61
  • 62. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫رنگ‬ ‫تشخیص‬:‫پنج‬ { c=New_ArCv_Color(255-Color.Red,255-Color.Green,255-Color.Blue); tftlcd_write_pixel(i,j,ArCv_Convert_ColorToRgbCode(&c)); flag=IsFound; } } } return flag; } Lecture 2 : Page 62
  • 63.
  • 64. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫یابی‬ ‫لبه‬ void ArCv_Detection_Edge(ArCv_Image Image,int Vc) { int i,j; ArCv_Color c,c1; tftlcd_fill(0x0); for(i=0;i<ArCv_Image_Height(Image)-1;i++) { for(j=0;j<ArCv_Image_Width(Image)-1;j++) { c=ArCv_Image_GetColor(Image,i,j); c1=ArCv_Image_GetColor(Image,i,j+1); if(c.Red>c1.Red+Vc || c1.Red>c.Red+Vc || c.Green>c1.Green+Vc || c1.Green>c.Green+Vc || c.Blue>c1.Blue+Vc || c1.Blue>c.Blue+Vc ) Lecture 2 : Page 64
  • 65. ‫روی‬ ‫تصویر‬ ‫پردازش‬Arm:‫کشف‬:‫یابی‬ ‫لبه‬ { tftlcd_write_pixel(i,j,0xFFFF); continue; } c1=ArCv_Image_GetColor(Image,i+1,j); if(c.Red>c1.Red+Vc || c1.Red>c.Red+Vc || c.Green>c1.Green+Vc || c1.Green>c.Green+Vc || c.Blue>c1.Blue+Vc || c1.Blue>c.Blue+Vc ) { tftlcd_write_pixel(i,j,0xFFFF); } } } } Lecture 2 : Page 65
  • 66. ‫آینده‬ ‫جلسه‬ ‫تا‬: ‫روی‬ ‫تصویر‬ ‫پردازش‬ ‫کدهای‬ ‫با‬ ‫کردن‬ ‫کار‬Arm‫آنها‬ ‫وتصحیح‬ ‫با‬ ‫کردن‬ ‫کار‬tftLcd ‫آن‬ ‫کدهای‬ ‫بهبود‬ ‫و‬ ‫تصویر‬ ‫پردازش‬ ‫سرعت‬ ‫باالبردن‬ ‫چگونگی‬ ‫مورد‬ ‫در‬ ‫تحقیق‬ Lecture 2 : Page 66
  • 67. ‫آینده‬ ‫جلسات‬ ‫در‬: ‫تصویر‬ ‫پردازش‬ ‫سرعت‬ ‫افزایش‬ ‫چگونگی‬ ‫و‬ ‫دوربین‬ ‫همانند‬ ‫جنبی‬ ‫دستگاه‬ ‫یک‬ ‫از‬ ‫که‬ ‫اطالعاتی‬ ‫و‬ ‫عکس‬ ‫پردازش‬ ‫چگونگی‬FingerPrint ‫آید‬ ‫می‬ ‫بدست‬ ‫روی‬ ‫عامل‬ ‫سیستم‬ ‫نصب‬Arm ‫نویسی‬ ‫ماژوالر‬ ‫و‬ ‫نویسی‬ ‫هدر‬ ‫پالس‬ ‫پالس‬ ‫سی‬ ‫و‬ ‫شارپ‬ ‫سی‬ ‫در‬ ‫سریال‬ ‫پورت‬ ‫با‬ ‫کردن‬ ‫کار‬ ‫طریق‬ ‫از‬ ‫کامپیوتر‬ ‫و‬ ‫میکروکنترلر‬ ‫ارتباط‬uart Lecture 2 : Page 67
  • 68. ‫؟‬ ‫سواالت‬ ‫؟‬ ‫آینده‬ ‫جلسه‬ ‫؟‬ ‫ارائه‬ ‫نحوه‬ ‫و‬ ‫مطالب‬ ‫شیوه‬ Lecture 2 : Page 68 ‫ّا‬‫م‬‫ا‬ ‫و‬....
  • 69. Lecture 2 : Page 69