ใช้ตัวกรอง Median และ Wiener กับรูปภาพใน Java

ใน บล็อกโพสต์ก่อนหน้า เราได้สาธิตวิธีเพิ่มเอฟเฟ็กต์เบลอให้กับภาพ วันนี้เราจะแสดงให้คุณเห็นวิธีการใช้ตัวกรองค่ามัธยฐานและตัวกรองแบบ Wiener ซึ่งมักใช้เพื่อลดจุดรบกวนและทำให้ภาพนุ่มนวลขึ้น มาดูวิธีการนำไฟล์ค่ามัธยฐานและไฟล์ Wiener ไปใช้กับอิมเมจโดยทางโปรแกรมใน Java

Java API เพื่อใช้ตัวกรองรูปภาพ Median และ Wiener - ดาวน์โหลดฟรี

หากต้องการใช้ตัวกรองค่ามัธยฐานและตัวกรองแบบ Wiener กับรูปภาพ เราจะใช้ Aspose.Imaging for Java เป็น API การแก้ไขรูปภาพที่มีประสิทธิภาพในการจัดการรูปภาพจากภายในแอปพลิเคชัน Java คุณสามารถ ดาวน์โหลด API หรือติดตั้งโดยใช้การกำหนดค่า Maven ต่อไปนี้

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository> 

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-imaging</artifactId>
    <version>22.9</version>
</dependency>

ใช้ Median Filter กับรูปภาพใน Java

ตัวกรองค่ามัธยฐานเป็นเทคนิคการกรองแบบดิจิทัลแบบไม่เชิงเส้น ซึ่งเป็นวิธีที่นิยมในการลดจุดรบกวนของภาพ ต่อไปนี้เป็นขั้นตอนในการใช้ตัวกรองค่ามัธยฐานกับรูปภาพใน Java

  • ขั้นแรก โหลดรูปภาพโดยใช้เมธอด Image.load()
  • จากนั้น ส่งภาพไปที่ประเภท RasterImage
  • สร้างอินสแตนซ์ของคลาส MedianFilterOptions และเริ่มต้นด้วยขนาดของสี่เหลี่ยมผืนผ้า
  • ใช้ตัวกรองค่ามัธยฐานโดยใช้เมธอด RasterImage.filter(Rectangle, MedianFilterOptions)
  • สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด RasterImage.save()

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการใช้ตัวกรองค่ามัธยฐานกับรูปภาพใน Java

// โหลดภาพที่มีสัญญาณรบกวน
Image image = Image.load("jack.jpg");

// โยนภาพลงใน RasterImage
RasterImage rasterImage = (RasterImage) image;

if (rasterImage == null) {
	return;
}

// สร้างอินสแตนซ์ของคลาส MedianFilterOptions และกำหนดขนาด
MedianFilterOptions options = new MedianFilterOptions(4);

// ใช้ตัวกรอง MedianFilterOptions กับวัตถุ RasterImage
rasterImage.filter(image.getBounds(), options);

// บันทึกภาพผลลัพธ์
image.save("Jac_median_denoise.jpg");

ด้านล่างคือภาพก่อนและหลังใช้ตัวกรองค่ามัธยฐาน

ใช้ Median Filter กับ Image Java

ใช้ตัวกรอง Gauss Wiener กับรูปภาพใน Java

Gauss wiener เป็นอีกวิธีที่ใช้กันทั่วไปในการจัดระดับภาพโดยลดสัญญาณรบกวนเพิ่มเติมและการเบลอให้เหลือน้อยที่สุด ต่อไปนี้เป็นขั้นตอนในการใช้ตัวกรอง gauss wiener กับรูปภาพใน Java

  • ขั้นแรก โหลดรูปภาพโดยใช้เมธอด Image.load()
  • จากนั้น ส่งภาพไปที่ประเภท RasterImage
  • สร้างอินสแตนซ์ของคลาส GaussWienerFilterOptions และเริ่มต้นด้วยขนาดรัศมีและค่าที่ราบรื่น
  • (ไม่บังคับ) หากต้องการรับภาพโทนสีเทา ให้ใช้เมธอด GaussWienerFilterOptions.setGrayscale(จริง)
  • ใช้ตัวกรอง gauss wiener โดยใช้วิธี RasterImage.filter(Rectangle, GaussWienerFilterOptions)
  • สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด RasterImage.save()

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการใช้ตัวกรอง Gauss Wiener กับรูปภาพใน Java

// โหลดภาพ
Image image = Image.load("jack.jpg");

// โยนภาพลงใน RasterImage
RasterImage rasterImage = (RasterImage) image;

if (rasterImage == null) {
	return;
}

// สร้างอินสแตนซ์ของคลาส GaussWienerFilterOptions และตั้งค่าขนาดรัศมีและค่าความเรียบ
GaussWienerFilterOptions options = new GaussWienerFilterOptions(12, 3);
options.setGrayscale(true);

// ใช้ตัวกรอง GaussWienerFilterOptions กับวัตถุ RasterImage
rasterImage.filter(image.getBounds(), options);

// บันทึกภาพผลลัพธ์
image.save("Jac_guass_weiner.jpg");

ด้านล่างคือภาพก่อนและหลังใช้ตัวกรองเกาส์วีเนอร์ด้วยตัวเลือกระดับสีเทา

ใช้ Gauss Weiner Filter กับ Image Greyscaling

ต่อไปนี้คือภาพก่อนและหลังใช้ตัวกรอง Gauss Wiener โดยไม่มีการปรับโทนสีเทา

ใช้ตัวกรองสี Gauss Weiner กับรูปภาพ

ใช้ตัวกรอง Motion Wiener กับรูปภาพใน Java

ฟิลเตอร์ Motion Wiener ใช้เพื่อลบภาพเบลอที่เกิดจากวัตถุที่กำลังเคลื่อนที่ ต่อไปนี้เป็นขั้นตอนในการใช้ตัวกรอง Motion Wiener กับรูปภาพใน Java

  • ขั้นแรก โหลดรูปภาพโดยใช้เมธอด Image.load()
  • จากนั้น ส่งภาพไปที่ประเภท RasterImage
  • สร้างอินสแตนซ์ของคลาส MotionWienerFilterOptions และเริ่มต้นด้วยความยาว ค่าที่ราบรื่น และมุม
  • ใช้ฟิลเตอร์ Motion Wiener โดยใช้วิธี RasterImage.filter(Rectangle, MotionWienerFilterOptions)
  • สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด RasterImage.save()

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการใช้ตัวกรอง Motion Wiener กับรูปภาพใน Java

// โหลดภาพ
Image image = Image.load("jack.jpg");

// โยนภาพลงใน RasterImage
RasterImage rasterImage = (RasterImage) image;

if (rasterImage == null) {
	return;
}

// สร้างอินสแตนซ์ของคลาส MotionWienerFilterOptions และตั้งค่าความยาว ค่าที่ราบรื่น และมุม
MotionWienerFilterOptions options = new MotionWienerFilterOptions(10, 2, 10);
//ตัวเลือก setGrayscale (จริง);

// ใช้ตัวกรอง MotionWienerFilterOptions กับวัตถุ RasterImage
rasterImage.filter(image.getBounds(), options);

// บันทึกภาพผลลัพธ์
image.save("Jac_motion_weiner.jpg");
ใช้ตัวกรอง Motion Weiner กับรูปภาพใน Java

Java Median และ Wiener Image Filtering API - รับใบอนุญาตฟรี

คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี และใช้ตัวกรองค่ามัธยฐานและตัวกรอง Wiener กับรูปภาพโดยไม่มีข้อจำกัดในการประเมิน

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีใช้ตัวกรองค่ามัธยฐานและตัวกรอง Wiener กับรูปภาพใน Java นอกจากนี้ เราได้กล่าวถึงวิธีลดจุดรบกวนของวัตถุที่เคลื่อนไหวในภาพ คุณสามารถใช้คุณสมบัติเหล่านี้ในแอปพลิเคชัน Java เพื่อรวมความสามารถในการแก้ไขรูปภาพได้อย่างง่ายดาย

อ่านเพิ่มเติม

คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ API การประมวลผลภาพ Java โดยใช้ เอกสารประกอบ นอกจากนี้ คุณสามารถแบ่งปันคำถามของคุณกับเราผ่านทาง ฟอรัม

ดูสิ่งนี้ด้วย