نمایش نتایج 1 تا 4 از 4

نام تاپیک: پردازش تصویر : حذف پیکسل های سفید رنگ

  1. #1

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

    سلام ؛

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

  2. #2

    نقل قول: پردازش تصویر : حذف پیکسل های سفید رنگ

    شاید روش بهتری هم باشه ولی من این کد رو نوشتم:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    bitmap: TBitmap;
    bitmap2: TBitmap;
    MyRect: TRect;
    I: Integer;
    j: Integer;
    begin

    MyRect.Top := -1;
    MyRect.Left := -1;
    MyRect.Right := -1;
    MyRect.Bottom := -1;

    bitmap := TBitmap.Create;
    bitmap.LoadFromFile('c:\1.bmp');

    for I := 1 to bitmap.Width do
    for j := 1 to bitmap.Height do
    if bitmap.Canvas.Pixels[I, j] <> bitmap.Canvas.Pixels[I - 1, j] then
    if (bitmap.Canvas.Pixels[I, j] = clBlack) and (MyRect.Left = -1) and
    (MyRect.Top = -1) then
    begin
    MyRect.Left := I;
    MyRect.Top := j;
    end
    else if (bitmap.Canvas.Pixels[I, j] = clwhite) then
    begin
    MyRect.Right := I;
    MyRect.Bottom := j;
    end;
    // end if
    // end for
    // end for

    bitmap2 := TBitmap.Create;
    bitmap2.SetSize(MyRect.Right - MyRect.Left,
    MyRect.Bottom - MyRect.Top);


    bitmap2.SetSize(MyRect.Right - MyRect.Left + 1,
    MyRect.Bottom - MyRect.Top + 1);
    bitmap2.Canvas.CopyRect
    (Rect(-1 * MyRect.Left, -1 * MyRect.Top,MyRect.Right - MyRect.Left,
    MyRect.Bottom - MyRect.Top), bitmap.Canvas, MyRect);
    bitmap2.SaveToFile('c:\2.bmp');
    end;

  3. #3

    نقل قول: پردازش تصویر : حذف پیکسل های سفید رنگ

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

  4. #4

    نقل قول: پردازش تصویر : حذف پیکسل های سفید رنگ

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

    همچنین، به جای اینکه پیکلسل ها را یکی یکی از Bitmap بخونید، از نظر کارایی بهتر هست که متد ScanLine استفاده کنید، و در هر بار فراخوانی، یک سطر از پیکسل ها را بخوانید.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •