مهملترین کاری که ممکنه این هفته با پایتون، پردازش تصویر، آر و آمار استنباطی انجام بدین: بررسی کبریت‌های توکلی

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

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

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

من به کبریت مشکوکم

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

بسته ده تایی کبریت

و بعد می ریم سراغ ده تا جعبه کبریتی که خریدیم و پشتشون مدعی است که تعداد متوسط کبریت‌های هر جعبه چهل تا است:

کبریت توکلی

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

تصویر اولیه کبریت ها

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

جعبه های کبریت

اول نیازمند یک برنامه هستیم که بتونه در یک عکس کبریت ها رو بشمره. بعد با یک اسکریپت این برنامه رو برای همه عکس ها اجرا خواهیم کرد. من برای اینکار اول کتابخونه‌های cv2 رو امتحان کردم ولی با numpy نتیجه بهتر و قشنگ تری گرفتم. در قدم اول کافیه عکس رو بخونیم، اون ۱ به کتابخونه می گه عکس رو بعد از خوندن خاکستری کنه که کار ما رو راحتتر می کنه:

kebrit = scipy.misc.imread(fileName, 1) # gray-scale image

و خروجی چیز شبیه این است:

تصویر کبریت قبل از پردازش تصویر

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

kebrit_smooth = ndimage.gaussian_filter(kebrit, 6)

حالا متغیر kebrit_smooth یک تصویر نرم شده از تصویر اصلی است:

تصویر با فیلتر گاوسی پردازش تصویر

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

tresh = 120
labeled, objectsNum = ndimage.label(kebrit_smooth < tresh)

تابع ndimage.label ورودی خودش رو بررسی می کنه و تعداد اجسام به هم پیوسته توی اون رو می شمره. اما مشکل اینه که حتی تک پیکسل های منفرد هم شمرده می شن. برای جلوگیری از این امر من بهش یک ساختار می دم که شکلم حداقل لازمه چنین ساختاری داشته باشه:

tresh = 120
removeOnes = np.ones((3,3), dtype="bool8")
labeled, objectsNum = ndimage.label(kebrit_smooth < tresh, structure=removeOnes)

دقت کنین که اون استراکچر در اصل می گه حداقل تصویر قابل تشخیص من باید این باشه:

array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)

و نتیجه اش این می شه که نقطه های منفرد دیگه شمرده نشن. البته انتظارم اینه که با اسموت کردن مرحله قبل این نقطه ها به حداقل رسیده باشن. نتیجه این ترکیب چنین تصویری است:

پردازش تصویر نهایی نوک کبریت ها

و خب چنین خروجی متنی ای:

10boxes/IMG_2608.JPG , 29

حالا کافیه یک اسکریپت ساده، همه ده تا فایل رو به اون برنامه بده:

#!/bin/bash

for f in *JPG
do
    ../count.py $f
done

و به خروجی زیر برسیم:

$ ./doall.sh 
IMG_2606.JPG , 35
IMG_2607.JPG , 30
IMG_2608.JPG , 29
IMG_2609.JPG , 32
IMG_2610.JPG , 29
IMG_2611.JPG , 33
IMG_2612.JPG , 36
IMG_2613.JPG , 38
IMG_2614.JPG , 37
IMG_2615.JPG , 38

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

> tavakoli <- read.csv(file="results.csv",head=FALSE,sep=",")
> matches <- tavakoli[2]$V2

حالا اطلاعات هر جعبه کبریت رو دارم. بذارین یک نگاه سریع بهش بندازیم:

> summary (matches)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  29.00   30.50   34.00   33.70   36.75   38.00 

بعله. می بینیم که میزان متوسط پایینتر از ۳۴ است. یعنی تعداد متوسط این ده قوطی کبریت ۶ تا کمتر از چیزی است که ادعا شده یا به بیان صحیح‌تر ۱۵٪ کمتر به ما جنس فروختن. جالبیش اینه حتی یک جعبه از این ده جعبه هم به چیزی که ادعا می شد میانگین است نرسیده. بذارین جلوتر بریم:

> hist(matches, xlim=c(28,42), ylim=c(0,4), main="هیستوگرام تعداد کبریت های توکلی در هر جعبه", sub="www.jadi.net", breaks=8)
> curve(dnorm(x, mean=mean(matches), sd=sd(matches))*10, add=TRUE, col="red", lwd=2) 

و روی این نمودار با کمی آمار احتمالات می تونیم احتمال اینکه در یک جعبه کبریت اتفاقی توکلی که خریده‌ایم و مدعی داشتن ۴۰ کبریت است، چهل یا بیشتر کبریت وجود داشته باشد را حساب کنیم:

> 1-pnorm(40, mean=mean(matches), sd=sd(matches)) #یک منهای سمت چپ نمودار نرمال در نقطه ۴۰ کبریت
[1] 0.03970968

بله. با اینکه کبریت توکلی مدعی است در هر جعبه اش تقریبا ۴۰ کبریت وجود داره، برنامه پردازش تصویر و نمودارهای نرمال ما نشون می دن که احتمال اینکه واقعا در یک جعبه کبریت توکلی چهل یا بیشتر کبریت باشه، سه صدم درصد بیشتر نیست

آمار شیرین است

نتیجه‌ها

۰- موسسه استاندارد و حقوق مصرف کننده خاصی نداریم یا هنوز این مساله رو ندیدن
۱- راکفلر باید بیاد پیش تولید کننده‌های ما لنگ بندازه
۲- آمار شیرین و فان است
۳- می تونیم با کارهای علمی بامزه هم تفریح کنیم هم چیز یاد بگیریم

مرتبط

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

دوره کامل ویدئویی لینوکس جادی – آزمون ۱۰۱ و کاملا رایگان

فیلم آموزشی لینوکس رایگان

بالاخره بعد از دو ماه نفس گیر و پر کار و پر از سینک کردن صدا و تصویر و رندر و نوشتن و ادیت کردن، دوره آموزش تصویری لینوکس LPIC1 امتحان ۱۰۱ آماده شده.

ال.پی.آی.سی. این روزها مرسوم‌ترین مدرک لینوکس است و برای گرفتن سطح یک اون باید دو امتحان متفاوت ۱۰۱ و ۱۰۲ رو بگذرونیم. دوره فعلی امتحان ۱۰۱ رو پوشش می ده.

اسپانسری شرکت مبین نت باعث شده ویدئوهای آمادگی آزمون ۱۰۱ ال پی آی سی و امتحان کامپتیا به رایگان در دسترس شما باشن.

خوشحال می شم دوره‌ها رو در سایت دانش‌آباد ببینین و هر نقد و نظری دارین بهم بگین تا در دوره ۱۰۲ رعایتشون کنیم، خودم که هیجان زده ام!

اینم اضافه کنم که هرچند انتظار می ره ویدئوهای آموزش فارسی لینوکس مفاهیم رو به خوبی انتقال بدن، اما گذروندن یک امتحان انگلیسی نیاز به خوندن و دوره کردن به زبان انگلیسی هم داره. برای اینکار هم در کنار ضبط ویدئوها کتاب آزاد ال پی آی سی مخصوص غیرانگلیسی‌زبان‌ها رو تهیه کردم تا به شما در گذروندن امتحان کمک کنه، آدرسش هست j.mp/jadilpic1.

مطمئنا کامنت ها و به اشتراک گذاشتن و غیره می تونه روحیه بخش شروع تهیه مطالب مربوط به آزمون ۱۰۲ باشه که در کنار این دوره، یک آدم رو به یک ادمین خوب لینوکسی تبدیل میکنن.

پیروزی بی طرفی شبکه به کمک همه، از تکنولوژیست‌ها تا پورن استارها

net

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

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

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

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

مرتبط

و حالا.. اپلیکیشن رادیو گیک برای آیفون و آیپد

اپ آیفون آی او اس آیپد رادیو گیک

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

اگر iOS دارین بسیار خوشحال می شم اپلیکیشن ای او اسی رادیو گیک رو دانلود کنین و امتیاز بدین که بالاتر بیایم (: در ضمن! در شماره قبلی که درخواست حمایت و روحیه کرده بودیم، اینقدر روحیه و حمایت زیاد شد که حالا خجالت زده هستم. ممنون از همگی.

نیکو رو توی توییتر فالو کنین و اگر به نظرتون برنامه ش برنامه خوبیه، توی توی لینکدینش Endorse کنین.

مرتبط

سی تی اسکن مجسمه ۱۰۰۰ ساله بودایی، مومیایی داخلش رو آشکار کرد

mummy

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

هلندتایمز نوشته

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

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

rohani

بله… آدم گاهی می مونه که واقعا چه خبره (: ابراهیم امامی روی توییتر توجهم رو به این جلب کرد که برنامه نویس / مدیر سیستم / ادمین سایت ریاست جمهوری احتمالا مشغول بررسی است که چرا سرچ سایت رییس جمهوری خوب کار نمی کنه و به این نتیجه رسیده که توی سایت لایو، کوئری رو نشون بده که از پنج تا قدم اول اینجکشن، چهار تاش رو برای هکرها برداشته باشه… حالا قشنگی و کلاس و نظم سایت ریاست جمهوری فدای سرمون و کلا هم جایی برای «تماس با ما» پیدا نکردم که شاید بشه بهشون خبر داد.

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