حذف مقدار از جدول در JSP

پاسخ به نظرات خوانندگان 

سلام  ! 

در صفحه ی member قرار بود مقادیر موجود در جدول member نمایش داده بشه ، که این کا رو با یه select زدن انجام دادیم ، بعد واسه اضافه کردن عملیات حذف item از جدول ، چکباکس بهش اضافه کردیم . یادت که هست؟

اوکی ، بعد صفحه ی delete رو اماده کردیم که داخلش عملیات حذف  item مورد نظر کاربر انجام میشد ، حالا واسه این که جدول همیشه به روز باشه بعد از عملیات حذف باید به صفحه ی member ارجاع داده بشه . من حس می کنم مشکل شما در عملیات ارجاع به صفحه ی member باشه . 

-------------------------------------------------------------------------------------------------------------------------------------

 گفتم دوستت دارم نگاهي به من کرد و گفت: چند تا؟ دستام رو بالا آوردم و تمام انگشتهاي دستمو نشونش دادم اما اون به کف دستام نگاه مي کرد که خالي بود ......

پیاده سازی تابع فیلتر بر روی تصویر

سلام دوستای گلم !!

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

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

اعمال فیلتر در نرم افزار متلب با fspecial و imfilter انجام میشه ، fspecial یه تابع فیلتر دو بعدی از پیش تعریف شده  ست که نوع فیلتر رو مشخص می کنه و اونو داخل یه متغییر مثل h قرار می ده یعنی : h=fspecial (type)

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

خروجی fspecial رو داخل یه متغییر مثل h  قرار می دیم و با استفاده از تابع imfilter فیلتر مورد نظر مونو رو تصویر اعمال می کنیم .

مثال :

 یه تصویر خونده میشه ، می خوایم فیلتر disk رو با شعاع 5 رو تصویر اعمال کنیم .

تصاویر زیر اجرای یه برنامه ی ساده در مورد فیلتر کردن تصویره ، کل فیلتر هایی که تو جدول بالا بود رو پیاده سازی کردم ( بچه ها سوتی رو !!! نام واسه m فایل درست حسابی انتخاب نکردم !!! untitled1 ) 

 

 

پیاده سازی فیلتر بالا گذر حوزه ی فرکانس

سلام دوستای خوبم !

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

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

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

فیلتر پایین گذر هم واسه آرام کردن تصویر به درد می خوره چون فرکانس های بالا رو حذف می کنه .

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

یه تصویر انتخاب می کنی و از رنگی به gray می بریم .

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

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

اجراش اینه ، گفتم تو حوزه ی فرکانس نباید انتظار یه تصویر مثل حوزه ی مکان رو داشت !!! پیکسل بی پیکسل 

الان دیگه باید بریم سراغ عملیات فیلترینگ : وقتی از FFTshift استفاده می کنی یعنی داری فرکانس های کوچک رو از بزرگ جدا می کنی . 

اجراش این بود ، می تونی از تصویرت قدر مطلق بگیری تا مشخص تر بشه ..............



پیاده سازی الگوریتم های لبه یابی تصویر - قسمت دوم

سلام دوستای گلم

یه فایل خوب واسه الگوریتم های لبه یابی برای دانلود گذاشتم ، دوست داشتی بررسی کن

لینک دانلود

از الگوریتم های لبه یابی هنوز چند موردی باقی مونده که الان واست می گم .

zerocross

 

Prewitt

خیلی شبیه sobel می مونه ، اما ضرایب ماسکش با اون فرق داره . ببین اجراشو

Roberts

به اندازه ی canny قویی نیست ، خیلی حساس به نویزه و پیکسل های کمتری رو واسه تقریب گرادیان به کار می بره . نگاه کن شیب ها رو لبه یابی نکرده !

 

Log

اون لگاریتمی نیست که فکر می کنیا !! نه معنیش اینه : laplacian of Gaussian method

حالا بیا اجرای همشونو باهم داخل یه پنجره ببینیم :

اولا واسه هر کدوم از عملگر ها یه تابع بنویس . بلدی دیگه ؟

واسه تعریف تابع تو متلب اول کلمه ی کلیدی function بعد پارامتر های خروجی سپس نام تابع و دست آخر آرگومان های ورودی ( تصویری که می خوای عملر لبه یابی روش اعمال بشه )

این تابع کارش اینه که باید تصویر رو از حالت rgb به gray تبدیل کنه و بعد edge رو روش اعمال کنه . خروجی تابع مقدار موجود در BW1 ، که به صورت یه تصویر logic قابل نمایشه.

ما 6 مورد عملگر لبه یابی داشتیم پس واسه هرکدوم یه تابع بنویس . واسه اجراش برو تو محیط command window و ابتدا تصویر مورد نظر رو با دستور imread بخون . حالا کافی این تصویر رو واسه هر کدوم از تابع ها بفرستی و خروجی رو دریافت کنی . اما واسه نمایش هر 6 تا تصویر خروجی در یک figure از subplot(m,n,p) استفاده می کنی ، subplot چی کار می کنه ؟ یه تقسیم بندی بین تصاویر مورد نظر انجام می ده با ساختن یه ماتریس m*n

مثلا ما 6 تا تصویر خروجی داریم پس یه ماتریس دو در سه می خوایم .

 

 

پیاده سازی الگوریتم های لبه یابی تصویر - قسمت اول

سلام دوستای گلم 

این پست رو می خوام کاملا پردازش تصویری کنم ! اصلا تو فکرم یه آموزش پردازش تصویر با متلب راه بندازم و هرچی بلدمو و هرچی یاد می گیرمو داخلش بنویسم ، چه طوره ؟

ببین قول بهت می دم یه جور خوب توضیح بنویسم . 

الان می خوام راجب لبه یابی در پردازش تصویر بگم : لبه تصویر در واقع نقاطی از تصویره که در اونا شدت روشنایی به طور ناگهانی ( یهویی ) تغییر کرده !

الگوریتم های متفاوتی در این زمینه داریم که ابتدا از sobel شروع می کنیم . چه طوری کار می کنه ؟ الگوریتم سوبل دو تا ماسک یکی عمودی و دیگری افقی با ضریب های مشخص ( ضریب پیکسل های قبلی منفی و ضریب پیکسل های بعدی مثبت و همچنین همسایگی های قطری مقدار 1 و همسایگی های عمودی مقدار 2 ) رو تصویر اعمال می کنه . این الگوریتم واسه لبه یابی عمودی خیلی مناسبه مثلا برای تشخیص پلاک خودرو .

ابتدا تصویر مورد نظر رو می خونیم ، حواست باشه تصویر باید برای برنامه قابل دسترس باشه یعنی باید در مسیر patch باشه یا در پوشه ایی که در حال حاضر برنامه به اون دسترسی داره باشه. مثلا با دستور dir می تونی متوجه بشی متلب الان به کدوم پوشه ها دسترسی داره.

اوکی ، بعد از خوندن تصویر باید اونو از رنگی به سطح خاکستری ببری با دستور rgb2gray

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

خروجی تابع edge یه تصویر logic ، تصاویر زیر رو دنبال کن.

 

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

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

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

 

یه مقایسه بین خروجی ها مشخص می کنه الگوریتم canny عملکرد بهتری داره ، تصویر سمت راست

پیاده سازی سیستم تشخیص عنبیه

پاسخ به نظرات خوانندگان

سلام  !

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

 لینک دانلود

 ----------------------------------------------------------------------------------------------------------------------

ﺧﺪﺍﯾﺎ ﻣﻨﻮ ﺑﺒﺨﺶ ﺍﮔﺮ ﻫﻤﯿﺸﻪ ﺑﻪ ﻓﮑﺮ ﺭﺿﺎﯼ ﻫﻤﻪ ﯼ ﻫﯿﭻ ﻫﺎ ﻫﺴﺘﻢ ﻭﻟﯽ ﺑﻪ ﻓﮑﺮ ﺭﺿﺎﯼ ﺗﻮ ﮐﻪ ﻫﻤﻪ ﻫﺴﺘﯽ ، ﻧﯿﺴﺘﻢ …

معرفی تگ table در JSP

پاسخ به نظرات خوانندگان

سلام 

در مورد تگ table در صفحه ی jsp پرسیده بودین ، بزار اول در مورد این تگ به صورت کامل واست بگم :

زمانی که بخواییم در صفحه ی jsp جدولی داشته باشیم از تگ table استفاده می کنیم

برای درج مقدار در جدولمون باید تگ td (table data)باز کرده داخلش مقدار مورد نظرت رو وارد کنی سپس این تگ رو ببندیش ، اگه همین الان از این کد اجرا بگیری چیزی جز یه نوشته ی ساده نمی بینی و خبری از جدول نیست .

این یعنی جدول باید کادر داشته باشه واسه همین از border استفاده می کنیم ، مقدار border میزان ضخامت کادر جدول رو معلوم می کنه ، مثلا اینجا من مقدارشو 4 انتخاب کردم.

 

 

جدول ما ممکنه چند تا ردیف داشته باشه واسه همین باید از تگ tr استفاده کنی .

در این جدول ما دو تا ستون داریم و دو تا سطر، که ستون ها به وسیله ی تگ td و سطر ها با تگ tr ایجاد شدن .

اما درمورد مشکل شما ، ایجاد جدول واسه نمایش مقادیرموجود در member به صورت زیر است:

ابتدا ایجاد ردیف واسه عناوین ستون ها مثل pass word ، name ، email با استفاده از تگ tr سپس داخل این تگ برای خلق ستون ها از تگ td استفاده می کنیم . ( چون می خوایم داخل جدول چک باکس هم باشه پس واسش یه ستون ایجاد می کنیم اما چیزی داخلش نمی نویسیم )

 

می خوایم مقدار موجود در نمونه شی ResultSet رو که نتیجه ی دستور select ما بوده رو داخل جدول نمایش دهیم.

این هم اجرای برنامه

 

----------------------------------------------------------------------------------------------------------------------

از خــدا مــیخواهــم آنــچه را شــایسته تــوسـت

بــه تـــو هــدیـــه دهـــد

نــه آنـچـه را کــه آرزو داری

زیــرا گــاهـی آرزوهــای تــو کـوچـک اسـت

و شــایـسـتـگی تــو بــسـیــار...


 

پیاده سازی الگوریتم رتبه بندی گوگل

پاسخ به نظرات خوانندگان 

سلام 

در مورد نحوه ی پیاده سازی الگوریتم رتبه بندی گوگل پرسیده بودین ، این الگوریتم رو میشه با زبان های java ، دلفی و .... پیاده سازی کرد ، لینک زیر این الگوریتم رو در متلب پیاده سازی کرده : 

http://en.wikipedia.org/wiki/PageRank

امیدوارم موفق باشین .....

------------------------------------------------------------------------------------------------------------------------

خدای خوب مــن ، زنـدگی بـه سـختی اش می ارزد

اگر تو در انتهای هر قصه ایسـتاده باشی …

تفاوت servlet با JSP

پاسخ به نظرات خوانندگان

در مورد تفاوت بین servlet با jsp پرسیده بودین ،

Servlet

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

بزار راجب وظایف servlet engine این طوری واست بگم که :

بار گذاری سرولت مناسب با این درخواست

فراخوانی متد init() مربوط به این سرولت

حالا هرچی درخواست مربوط به این سرولت می شه رو با فراخوانی متد service() اش واسش بفرست

اگه موتور سرولت خاموش بشه ، باید متد destroy() همه ی سرولت ها فراخوانی بشه.

JSP

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

شرح مختصر:

سرولت کلاس های محض جاواست در حالی که jsp این طور نیست.

ما می تونیم کد های html رو هم داخل jsp داشته باشیم و هم داخل servlet

وقتی که کد html رو داخل جاوا می نویسیم می گیم servlet اما وقتی داخل html کد جاوا می نویسیم می شه jsp 

Servlet ها استاتیک هستن در صورتی که jsp داینامیکه.

سرعت servlet ها نسبت به jsp بیشتره چون از جنس جاوا کلاس هستن .

 

JDBC چیست ؟

پاسخ به نظرات خوانندگان 

سلام  ! 

JDBC یه رابط برنامه سازی کاربردیه (API)  که باعث میشه برنامه های جاوا به دیتا بیس متصل بشن. مثل یه استاندارد می مونه و اصلا واسش مهم نیست که تو الان از Mysql داری استفاده می کنی یا Oracle ، همیشه با یه روش اتصال به دیتا بیس رو برقرار می کنه. 

اما چه وظایفی بر عهده داره ؟ 

1 - ارتباط با پایگاه داده 

2 - ارسال دستورات sql 

3 - پردازش و دریافت نتایج برگشتی از پایگاه داده 

4 - قطع ارتباط با بانک اطلاعاتی 

چه شکلی میشه این وظایف رو پیاده سازی کرد؟؟؟ 

ابتدا باید نوع درایور رو واسه اتصال معین کنیم . 

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

حالا واسه پرس و جو از پایگاه داده ، به متد کلاس statement نیاز داریم تا دستور sql رو ببره واسه پایگاه داده 

سپس برای اجرا ی دستور SQL از متد execute استفاده می کنیم البته گاهی وقت ها اگه قراره نتیجه رو برگردونه باید execute query بزنی اما اگه فقط می خوای اجرا بشه همون execute کافیه . البته مدل های مختلف دیگه ایی هم داره مثل execute update و .... که واسه عملیات خاصی مثل درج و ویرایش داده ها در جدول استفاده میشه. 

آخر دست هم باید connection رو ببندیم. 

البته می دونی که باید همه ی این دستورات رو داخل بلوک try - catch بنویسی . 

--------------------------------------------------------------------------------------------------------------------------------

غصه مرا کُشت...!!! وقتی دیدم دست به سینه ایستاده ای... تمام ِ راه را برای آغوشَت دویده بودم بی انصاف....


آموزش JSP - قسمت دهم

سلام  ! 

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

یه مثال ساده در این رابطه می تونه این باشه : دو تا دکمه در صفحه ی main.jsp تعریف می کنی با نام one option و  two option ، زمانی که کاربر دکمه  ی one option رو انتخاب کرد باید به صفحه ی option1.jsp بره و بهش Hello  گفته بشه و اگه two option  رو زد بره به صفحه ی option2.jsp و متن Goodbye رو ببینه . 

چه قدر راحت بود !! حالا این کارو تو پروژه ات به جای لینک صفحه ی ثبت نام انجام بده . یعنی به جای لینک از دکمه ی Register استفاده کن.