آموزشی

چگونه می‏توان تصاویر رنگی را به طیف خاکستری تبدیل کرد؟

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

خوب راستش تابع تبدیل تصاویر رنگی به طیف خاکستری خیلی ساده‏تر از آن چیزی است که به نظر می‏آید. من در این نوشته این تابع را آورده‏ام و درباره آن توضیحاتی هم می‏دهم. اما پیش از این باید توضیحی درباره تصاویر Black and White و تصاویر Grayscale بدهم. تصاویر Black and White یعنی تصاویری که تنها و تنها در ساخت آنها از دو رنگ سیاه و سفید استفاده شده است. اما تصاویر Grayscale تصاویری هستند که رنگهای آن از طیف خاکستری تشکیل شده است. بدبختانه ما در فارسی برای هر دو نوع تصاویر واژه «سیاه و سفید» را به کار می‏گیریم.
به هر روی من در این نوشته تابع تبدیل تصاویر رنگی به تصاویر طیف خاکستری یا Grayscale در C را آورده‏ام:

for(i=0;iw-1;i++){
for(j=0;jh-1;j++){

color=getpixel(temp,i,j);
r=getr32(color);
g=getg32(color);
b=getb32(color);

h=(r+b+g)/3;
putpixel(temp1,i,j,makecol(h,h,h));
}
}

در این تابع با کمک دو حلقه تو در تور تمامی پیکسلها ستون به ستون و سپس پیکسل به پیکسل پیمایش شده است. تابع getpixel رنگ پیکسل فعلی را می‏خواند و سپس رنگ استخراج شده به کمک تابع getr32 و getg32 و getb32 به سه رنگ قرمز، سبز و آبی تجزیه می‏شود. این توابع روی تصاویر 32 بیتی (تصاویری که هر رنگ در 32 بیت نوشته شده است و بنابراین در این تصاویر می‏توان 4,294,967,296 رنگ را به کار گرفت) کار می‏کنند. تابعهای مشابهی برای کار کردن با تصاویر 24، 16، 15، 8، 7، 4 و 2 بیتی هم وجود دارد. بنابراین در این تابع فرض بر این گذاشته شده است که تصویر ورودی 32 بیت است. پس از این Hue رنگ با کمک فرمول ساده r+b+g/3 استخراج شده است. درباره Hue که یکی از ویژگی‏های فضای رنگی HSV یا HSL است اینجا بخوانید.
سپس با به کار گیری تابع MakeCol یک رنگ جدید ساخته شده است و با کمک تابع PutPixel رنگ جدید در تصویر اولیه گنجانده شده است.

مهمترین نکته‏ای که در این کد وجود دارد، روش تبدیل پیکسل رنگی به برابر طیف خاکستری آن است. نخست باید بدانیم که تمامی رنگهای Grayscale دارای مقادیر یکسان RGB هستند. یا به عبارت دیگر هر رنگی که دارای مقادیر یکسان R و G و B باشد یک رنگ Grayscale است. روش به کار رفته در این کد هم بر پایه همین اصل است.

مقادیر RGB تمام رنگهای Grayscale یکسان هستندمقادیر RGB تمام رنگهای Grayscale یکسان هستند

ابتدا مقدار Hue که مهمترین مولفه تشکیل دهنده یک رنگ در فضای رنگی HSV یا HSL است استخراج شده است و رنگی تشکیل شده است که مقدار R و G و B در آن برابر با مقدار Hue استخراج شده است.

دو سایت جالب برای یادگیری بهتر ویژوال بیسیک 6

بچه‏های هنرستان کامپیوتر در درس «برنامه‏سازی» باید برنامه‏نویسی ویژوال بیسیک را یاد بگیرند. امروز دو سایت جالب درباره برنامه‏نویسی ویژوال بیسیک پیدا کردم:

  • آموزشی VB به زبان فارسی: این لینک، که آموزش ویژوال بیسیک است، در سایت Schoolnet.ir آمده و ظاهرا یک Powerpoint است که به این صورت درآمده است. این فایل آموزشی، خیلی شسته و رفته و به زبان ساده، مسائل اولیه Visual Basic را آموزش داده است.
  • بخش برنامه‏نویسی بازی با Visual Basic در سایت Dutch's Software: در این بخش، بیست بازی کوچولو که بیشتر با ویژوال بیسیک 6 نوشته شده است، قرار دارد. این بازی‏ها برای افزایش درک شما از ویژوال بیسیک و همچنین علاقه‏مند کردن شما به برنامه‏نویسی خیلی موثر است. حتما سر بزنید و بازی‏ها را بارگزاری کنید. مطمئن باشید که چیزهای تازه هست که ازشان یاد بگیرید.

خودتان هم دست به کار بشید و یک چیزهایی بنویسید. کار سختی نیست، قول می‏دهم. اگر برنامه خوب و جالبی با ویژوال بیسیک نوشتید، هر چند که کوچک بود، حتما برایم بفرستید. به مانند همیشه، نمره شما محفوظ است (:

HTML یاد بگیرید؛ ولی تقلب نکنید

HTML زبان نشانه‏گذاری یا Markup خیلی ساده‏ای است. Tagهای HTML محدود است و ویژگی هر کدام از Tagها هم می‏تواند به راحتی به یاد بماند. یاد گرفتن HTML برای بچه‏هایی که درس Dreamweaver یا «بسته‏های نرم‏افزاری 2» را می‏گذارنند یا باید بگذارنند الزامی است. البته شماها که درس را به خاطر نمره‏اش نمی‏خونید؛ درسته؟ می‏خونید که یاد بگیرید دیگه. نه؟ (: بگذریم؛ من که اصلا بعید می‏دونم شماها درس بخونید (; امروز می‏خواهم چند تا سایت برای آموزش HTML معرفی کنم:

اما برای کسانی که دنبال راه میان‏بر هستند، باید Cheat Sheet مخصوص HTML را به دستشون داد. Cheat Sheetها یا برگه‏های تقلب، خیلی ساده و جمع و جور تمامی اطلاعات مربوط به یک مسئله را در خودشان گردآوری می‏کنند. این برگه‏ها به درد این که همراه خودتان به جلسه امتحان ببرید هم می‏خورد؛ فقط حواستان باشد که کسی نفهمد ((: اگر چه من مطمئنم که شماها خوب خوب درسهاتون رو می‏خونید و نیازی به Cheat Sheet و بردنش توی جلسه امتحان هم ندارید. خوب و اما چند Cheat Sheet برای HTML:

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

برای این که هم ،کمی تمرین جستجو در گوگل کرده باشید، همین الان کمی درباره Cheat Sheetها در اینترنت جستجو کنید. ببینید چه Cheat Sheet دیگری می‏توانید پیدا کنید که به شما در درسهایتان کمک کند. هر موردی که پیدا کریدن همین جا، بنویسید و آدرس هم بدهید، تا هم من مطمئن بشوم که توانستین جستجوی خوبی انجام بدهید و هم این که به درد بقیه دوستانتون بخورد.

Syndicate content