ฉันไม่มีความเข้าใจอย่างลึกซึ้งเกี่ยวกับเนื้อหาของการประมวลผลภาพ Java ดังนั้นฉันจะให้อภัยคุณสำหรับคำง่าย ๆ ของคุณ
Java ใช้การปรับระดับสีนั่นคือปรับส่วนประกอบ RGB ของรูปภาพและยังสามารถปรับความสว่างของภาพได้
รหัสทดสอบ
โมฆะคงที่สาธารณะหลัก (String [] args) {// การแปลงระหว่างไฟล์และ bufferedimage bufferedimage bi = file2img ("test.jpg"); // อ่าน image bufferedimage bii = img_color_gradation (bi, 100,0,0); img2fileรหัสปรับระดับสี
// ปรับระดับสีของภาพปรับส่วนประกอบของ RGB public public bufferedimage img_color_gradation (bufferedimage imgsrc, int r, int g, int b) {ลอง {// สร้างภาพโดยไม่ต้องโปร่งใส bufferedimage back = bufferedimage ใหม่ (imgsrc.getwidth () imgsrc.getheight (), bufferedimage.type_int_rgb); int width = imgsrc.getWidth (); ความสูง int = imgsrc.getheight (); สำหรับ (int i = 0; i <ความสูง; i ++) {สำหรับ (int j = 0; j <width; j ++) {int pixel = imgsrc.getRgb (j, i); สีสี = สีใหม่ (พิกเซล); int red = color.getred ()+r; ถ้า (แดง> 255) สีแดง = 255; ถ้า (สีแดง <0) สีแดง = 0; int green = color.getGreen ()+g; ถ้า (สีเขียว> 255) สีเขียว = 255; ถ้า (สีเขียว <0) สีเขียว = 0; int blue = color.getBlue ()+b; ถ้า (สีน้ำเงิน> 255) สีน้ำเงิน = 255; ถ้า (สีน้ำเงิน <0) สีน้ำเงิน = 0; สี = สีใหม่ (สีแดง, เขียว, สีน้ำเงิน); int x = color.getRgb (); back.setrgb (j, i, x); }} กลับมา; } catch (exception e) {e.printstacktrace (); คืนค่า null; -การอ่านรูปภาพและฟังก์ชั่นการจัดเก็บข้อมูล
// อ่านภาพสาธารณะแบบคงที่ bufferedImage file2img (string imgpath) {ลอง {bufferedImage bufferedImage = imageio.read (ไฟล์ใหม่ (imgPath)); คืนบัฟเฟอร์เมจ; } catch (exception e) {e.printstacktrace (); คืนค่า null; }} // บันทึกภาพขอบเขตอยู่ในรูปแบบ "jpg", "png" ฯลฯ โมฆะคงที่สาธารณะ img2file (bufferedimage img, ขอบเขตสตริง, สตริง newfile) {ลอง {imageio.write } catch (exception e) {e.printstacktrace (); -แบ่งปัน:
ต่อไปนี้เป็นสูตรการคำนวณสำหรับความสว่างและความคมชัด
(RGB แสดงถึงค่าของส่วนประกอบสีของภาพต้นฉบับค่าที่ไม่ได้ประมวลผลโดยตาราง NRGB, mBrightness แสดงถึงค่าความสว่างที่ปรับแล้ว McOntrast แสดงถึงค่าความคมชัดที่ปรับแล้วและ AVG แสดงถึงค่าเฉลี่ยของพิกเซลภาพทั้งหมด)
ความสว่าง: nrgb = rgb+mbrightness
ความคมชัด: NRGB = (RGB-AVG)*(1 เปอร์เซ็นต์%)+ช่วงค่าร้อยละของ AVG เปอร์เซ็นต์คือ (-1 ~ 1) 0 เป็นค่าดั้งเดิม สูตรคอนทราสต์นั้นดีมากที่จะพิสูจน์ ขยาย
nrgb = rgb-rgb*เปอร์เซ็นต์%-avg+avg*เปอร์เซ็นต์%+avg
nrgb = rgb-rgb*เปอร์เซ็นต์%+avg*เปอร์เซ็นต์%%
สำหรับเมทริกซ์ภาพทั้งหมดความสว่างจะต้องทำให้มั่นใจได้ว่าผลรวมพีชคณิตของเมทริกซ์ทั้งหมดไม่เปลี่ยนแปลง
และ avg = (rgb1+rgb2+... rgbn)/n (1)
(nrgb1+nrgb2+... nrgbn) = (rgb1+rgb2+... rgbn)+n*avg*เปอร์เซ็นต์%-(rgb1+rgb2+... rgbn)*เปอร์เซ็นต์% (2)
เพียงสูตรทดแทน (1) เป็นสูตร (2)
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการปรับระดับสีและรหัสการปรับความสว่างของภาพของภาพ Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น