
ในหลายกรณี คุณอาจต้องแปลงภาพ RGB เป็นระดับสีเทาหรือขาวดำ เช่น ในการประมวลผลภาพ เป็นต้น ในบทความนี้ คุณจะได้เรียนรู้วิธีแปลงภาพ RGB เป็นระดับสีเทาโดยใช้ Java . ยิ่งไปกว่านั้น บทความนี้จะครอบคลุมถึงการไล่ระดับสีเทาและการไบนาไรเซชันของรูปภาพอย่างชัดเจน
Java Color Image to Greyscale Converter - ดาวน์โหลดฟรี
ในการแปลงภาพ RGB เป็นโทนสีเทา เราจะใช้ Aspose.Imaging for Java เป็น API การประมวลผลรูปภาพ Java ที่ให้คุณจัดการรูปแบบรูปภาพยอดนิยมได้อย่างราบรื่น คุณสามารถ ดาวน์โหลด API หรือติดตั้งโดยใช้การกำหนดค่า Maven ต่อไปนี้
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging-java</artifactId>
<version>21.7</version>
<classifier>jdk16</classifier>
</dependency>
แปลงภาพ RGB เป็นระดับสีเทาใน Java
ต่อไปนี้เป็นขั้นตอนในการแปลงอิมเมจ RGB เป็นโทนสีเทาใน Java
- ขั้นแรก โหลดรูปภาพโดยใช้คลาส Image
- จากนั้นส่งภาพไปยังวัตถุ RasterCachedImage
- แคชภาพโดยใช้เมธอด RasterCachedImage.cacheData()
- แปลงภาพเป็นโทนสีเทาโดยใช้เมธอด RasterCachedImage.grayscale()
- สุดท้าย บันทึกภาพโดยใช้เมธอด RasterCachedImage.save(String)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแปลงรูปภาพเป็นโทนสีเทาใน Java
// โหลดรูปภาพในอินสแตนซ์ของรูปภาพ
try (Image image = Image.load("aspose-logo.jpg"))
{
// ส่งภาพไปที่ RasterCachedImage
RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
// ตรวจสอบว่ารูปภาพถูกแคชหรือไม่
if (!rasterCachedImage.isCached()) {
// ภาพแคชหากยังไม่ได้แคช
rasterCachedImage.cacheData();
}
// แปลงภาพเป็นการแสดงระดับสีเทา
rasterCachedImage.grayscale();
// บันทึกภาพผลลัพธ์
rasterCachedImage.save("Grayscaling_out.jpg");
}
รูปภาพอินพุต
ต่อไปนี้คือรูปภาพตัวอย่างที่ใช้ในบทความนี้

แปลงเป็นโทนสีเทา
ต่อไปนี้เป็นภาพหลังจากแปลงเป็นโทนสีเทา

Java บันทึกภาพเป็นขาวดำด้วย Binarization
ในแต่ละพิกเซลในรูปภาพจะมีค่าที่เป็นไปได้เพียงสองค่าเท่านั้น 0 หรือ 1 ในที่นี้ 0 หมายถึงไม่มีและ 1 หมายถึงมีสีอยู่ Aspose.Imaging รองรับวิธีไบนาไรเซชันสองวิธี ได้แก่ ไบนาไรเซชันแบบคงที่และไบนาไรเซชันด้วยเกณฑ์ Otsu
ไบนาไรเซชันด้วยเกณฑ์คงที่
ต่อไปนี้เป็นขั้นตอนในการดำเนินการไบนาไรเซชันบนรูปภาพโดยใช้เกณฑ์คงที่
- ขั้นแรก โหลดรูปภาพโดยใช้คลาส Image
- จากนั้นส่งภาพไปยังวัตถุ RasterCachedImage
- แคชภาพโดยใช้เมธอด RasterCachedImage.cacheData()
- แปลงภาพเป็นขาวดำโดยใช้เมธอด RasterCachedImage.binarizeFixed()
- สุดท้าย บันทึกภาพโดยใช้เมธอด RasterCachedImage.save(String)
รหัส Java ต่อไปนี้ใช้ไบนาไรเซชันกับรูปภาพและแปลงเป็นขาวดำ
// โหลดรูปภาพในอินสแตนซ์ของรูปภาพ
try (Image image = Image.load("aspose-logo.jpg"))
{
// ส่งรูปภาพไปที่ RasterCachedImage และตรวจสอบว่ารูปภาพถูกแคชไว้หรือไม่
RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
if (!rasterCachedImage.IsCached)
{
// ภาพแคชหากยังไม่ได้แคช
rasterCachedImage.CacheData();
}
// ภาพ Binarize ด้วยเกณฑ์คงที่ที่กำหนดไว้ล่วงหน้าและบันทึกภาพผลลัพธ์
rasterCachedImage.binarizeFixed((byte) 100);
rasterCachedImage.save("BinarizationWithFixedThreshold_out.jpg");
}
Binarization กับ Otsu Threshold
ต่อไปนี้เป็นขั้นตอนในการแปลงรูปภาพเป็นขาวดำด้วย Otsu threshold
- ขั้นแรก โหลดภาพโดยใช้คลาส Image
- ส่งภาพไปยังวัตถุ RasterCachedImage
- แคชรูปภาพโดยใช้เมธอด RasterCachedImage.cacheData()
- แปลงภาพเป็นขาวดำโดยใช้เมธอด RasterCachedImage.binarizeOtsu()
- สุดท้าย บันทึกภาพโดยใช้เมธอด RasterCachedImage.save(String)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแปลงรูปภาพเป็นขาวดำด้วย Otsu threshold โดยใช้ Java
// โหลดรูปภาพในอินสแตนซ์ของรูปภาพ
try (Image image = Image.load("aspose-logo.jpg"))
{
// ส่งรูปภาพไปที่ RasterCachedImage และตรวจสอบว่ารูปภาพถูกแคชไว้หรือไม่
RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
if (!rasterCachedImage.isCached())
{
// ภาพแคชหากยังไม่ได้แคช
rasterCachedImage.cacheData();
}
// ภาพ Binarize ด้วย Otsu Thresholding
rasterCachedImage.binarizeOtsu();
// บันทึกภาพผลลัพธ์
rasterCachedImage.save("BinarizationWithOtsuThreshold_out.jpg");
}
ภาพสีเป็นสีเทา ตัวแปลง Java - รับใบอนุญาตฟรี
คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อใช้ API โดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีแปลงภาพสีเป็นโทนสีเทาและขาวดำโดยใช้ Java ยิ่งไปกว่านั้น คุณได้เห็นวิธีการใช้ไบนาไรเซชันกับรูปภาพที่มีเกณฑ์คงที่หรือ Otsu นอกจากนี้ คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ API การประมวลผลภาพ Java โดยใช้ เอกสารประกอบ นอกจากนี้ คุณสามารถแบ่งปันคำถามของคุณกับเราผ่านทาง ฟอรัม