رفتن به مطلب

ایجاد تصویر با Transparency در متلب


nimaha72

ارسال های توصیه شده

سلام

من می خواهم این تصویر را رنگی کنم به طوری که ماه رنگ قرمز را داشته باشد و بقیه تصویر رنگ شفاف(Transparency) را داشته باشد . چگونه این کار را انجام دهم؟

لینک به دیدگاه
سلام

من می خواهم این تصویر را رنگی کنم به طوری که ماه رنگ قرمز را داشته باشد و بقیه تصویر رنگ شفاف(Transparency) را داشته باشد . چگونه این کار را انجام دهم؟

 

سلام

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

52a60t3nmkbia6la6lf.png

 

clear;
img = imread('moon.tif');
img2 = medfilt2(img,[7 7]);
img(img2<30) = 0;
img3 = cat(3,img,false(size(img)),false(size(img)));
imshow(img3)
imwrite(img3,'withTransparency.png','Alpha',double(img>0))

لینک به دیدگاه

اگر بخواهم رنگ ماه آبی شود چکار باید بکنم ؟ اگر بخواهم ناحیه اطراف ماه به رنگ سبز نیمه شفاف در آید چکار باید بکنم؟ 30 را از کجا آورده اید؟

لینک به دیدگاه
اگر بخواهم رنگ ماه آبی شود چکار باید بکنم ؟ اگر بخواهم ناحیه اطراف ماه به رنگ سبز نیمه شفاف در آید چکار باید بکنم؟ 30 را از کجا آورده اید؟

 

اگه بخوای آبیش کنی، باید به جای مولفه ی قرمز، باید مولفه ی سوم یا همون آبی مقدار داشته باشه، واسه رنگ های دیگه هم با ترکیب R و G و B می تونی به رنگ مورد نظر برسی، در مورد Transparency هم که گفتم، مقدار آلفا رو باید تغییر بدی، آلفا کانال یه ماتریس هم اندازه ی خود تصویر هست، یعنی تصویر RGBمون اندازه ی بعد سومش 3 هست، وقتی آلفا کانال اضافه میشه، 4 میشه. برای رنگ سبز هم مولفه یا کانال دوم تصویر باید مقدار داشته باشه. برای اینکه رنگ ماه فرق کنه باید بتونیم جدا بهش مقدار بدیم، بتونیم مکانش رو بدست بیاریم، به اینکار یعنی جدا کردن شیء از تصویر سگمنتیشن میگن، اون 30 هم واسه همین استفاده شده، ماه جدا مقدار دهی بشه، Background جدا. اما چون بقیه تصویر تیره هست، این مقادیر رو توی مولفه ی سبز هم قرار بدیم، به همین صورت میشه و رنگ سبزش مشخص نمیشه، برای همین با 128 جمع کردم مقدارش مشخص بشه.

rtxg8s7jaltsvhzdpi.png

 

clear;
img = imread('moon.tif');
Mask = medfilt2(img,[7 7])>30;

img1 = img;
img1(~Mask) = 0;

img2 = img;
img2(Mask) = 0;
img2(~Mask) = img2(~Mask) + 128;

img_out = cat(3,false(size(img)),img2,img1);
imshow(img_out)
A = double(Mask);
A(~Mask) = 0.5;
imwrite(img_out,'withTransparency.png','Alpha',A)

لینک به دیدگاه

اگه بخوایم تصویری که Transparency داره رو هم با متلب نشون بدیم، با imshow نمیشه فکر کنم، باید از image استفاده کنیم، این شکلی:

r4r2wu59k0nvlairhe.png

 

clear;
img = imread('moon.tif');
figure
set(gcf,'Position',get(0,'ScreenSize'))

subplot(131)
imshow(img)
title('Image','FontSize',14)

Mask = medfilt2(img,[7 7])>30;
img1 = img;
img1(~Mask) = 0;
img2 = img;
img2(Mask) = 0;
img2(~Mask) = img2(~Mask) + 128;
img_out = cat(3,false(size(img)),img2,img1);

subplot(132)
imshow(img_out)
title('Coloring','FontSize',14)

A = double(Mask);
A(~Mask) = 0.5;
imwrite(img_out,'withTransparency.png','Alpha',A)

subplot(133)
image(img_out,'AlphaData',A)
axis image
axis off
title('%50 Transparency','FontSize',14)

لینک به دیدگاه

سلام اگر بخواهیم در تصویر اصلی قسمت هایی از ماه که تیره تر از قسمت های دیگر ماه هست را به رنگ دیگری در آوریم مثلا قرمز کنیم چکار باید کرد؟

 

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

لینک به دیدگاه
سلام اگر بخواهیم در تصویر اصلی قسمت هایی از ماه که تیره تر از قسمت های دیگر ماه هست را به رنگ دیگری در آوریم مثلا قرمز کنیم چکار باید کرد؟

 

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

 

سلام

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

 

در مورد آلفا هم یه چیزایی گفتم، برای تصاویر رنگی 3 مولفه قرمز، سبز و آبی (R و G و B) در نظر گرفته میشه، اما وقتی شفافیت هم بخوایم به همین نوع تصاویر اضافه کنیم، باید یه مولفه ی دیگه هم براش در نظر بگیریم، این 4 تا مولفه همه 4 تا ماتریس هم اندازه (به اندازه ی ابعاد تصویر اصلیمون) هستن. آلفا مقداری بین یک و صفر داره، که یک به معنای نمایش کامل و صفر به معنای شفافیت کامل هست، این مقدار برای هر پیکسل داریم، یعنی مشخصی می کنه برای هر پیکسلی چقدر خودش رو نشون بده، چقدر رنگی که پشتش قرار گرفته تاثیر داشه باشه.

 

منبع نه نمیشناسم، سرچ هم نکردم البته.:a030:

لینک به دیدگاه

در شکل سوم که شفافیت را اعمال کردید اگر بخواهیم تصویر حاصل را ذخیره کنیم و دوباره روی آن کاری را انجام دهیم چگونه می توان آنرا به فرمت عکس ذخیره کرد؟ میشه کدشو بنویسید؟

لینک به دیدگاه
در شکل سوم که شفافیت را اعمال کردید اگر بخواهیم تصویر حاصل را ذخیره کنیم و دوباره روی آن کاری را انجام دهیم چگونه می توان آنرا به فرمت عکس ذخیره کرد؟ میشه کدشو بنویسید؟

 

ذخیره رو که نوشتم، برای تصویر های قبلی هم نوشته بودم:

 

imwrite(img_out,'withTransparency.png','Alpha',A)

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

 


 

 

52a60t3nmkbia6la6lf.png

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...