《【第八篇-圖片總結篇】Python圖片處理自動化:終極工廠!從裁剪壓縮到智能加水印,打造你的視覺內容生產流水線!》

在數字時代,圖片無處不在。然而,高質量的圖片背后,往往隱藏著繁瑣的后期處理:圖片文件太大導致加載慢;尺寸不符需要裁剪;版權保護要加水印;

為了兼容性還得批量轉換格式……這些重復、機械的工作,不僅耗費了你大量時間,更嚴重拖慢了你的辦公自動化進程。
圖片焦慮癥

在本系列之前的文章中,我們已經分別解鎖了Python在圖片處理領域的各項“魔法”:

《【第五篇】圖片處理自動化:讓你的視覺內容更專業!:圖片處理基礎與批量裁剪》
學習了Pillow庫基礎: 掌握了圖片的基本讀寫和信息獲取。
《【第六篇】圖片太大、加載慢?Python批量壓縮+格式轉換,一鍵瘦身,終極指南》
學習了圖片批量裁剪: 實現了按固定尺寸、按比例、中心裁剪等多種方式。

圖片批量壓縮: 告別圖片太大怎么辦的困擾,學會了按質量、按尺寸、甚至智能控制文件大小,讓圖片瘦身,文件秒變小。

圖片格式轉換與尺寸調整: 輕松實現PNG轉JPG、JPG轉WebP,以及批量調整圖片尺寸。
《【第七篇】圖片批量加水印:Python幫你一鍵添加版權或Logo,告別手動PS,高效保護你的作品!》
學習了圖片批量加水印: 為圖片加上專屬的文字或Logo水印,實現圖片版權保護。

然而,這些功能如果各自為戰,依然需要我們手動調用。有沒有一個辦法,能把這些功能串聯起來,像流水線一樣一站式自動化處理?

我們將系統總結這些核心功能,并深入探討如何將它們整合為一套可配置的自動化流水線。告別手動P圖,全面提升你的圖片處理自動化效率,讓你的視覺內容生產力飆升!

提高視覺生產力
. 核心功能回顧:你的Python圖片處理“工具箱” (約1200字)

在之前的篇章中,我們已經深入探索了Python Pillow 庫的強大功能,掌握了構建圖片處理自動化腳本所需的各種“工具”。這里,我們進行一次系統的回顧,并強調它們在實際應用中的核心價值。

1.1 Pillow庫基礎:Python圖片處理的基石
知識點: Pillow庫的安裝,Image對象的概念,打開、顯示、保存圖片,獲取圖片尺寸、格式等基本信息。

作用: 它是所有圖片處理操作的起點和終點,讓你用代碼“看到”并“觸碰”圖片。

回顧: 你已經學會了如何用Image.open()加載圖片,用img.save()保存圖片,并獲取img.size, img.format等信息。
可視化:
python可視化
1.2 圖片批量裁剪:精準截取,統一規格!
知識點: Image.crop()方法,固定尺寸裁剪、按比例裁剪、中心裁剪的實現邏輯。
作用: 統一電商產品圖尺寸、社交媒體頭像適配、去除圖片邊緣冗余。

按固定尺寸裁剪: 定義矩形區域 (x1, y1, x2, y2)。

按比例裁剪與中心裁剪: 根據目標寬高比(如16:9、1:1),智能計算裁剪區域,并確保內容居中。
可視化:

python 圖片裁剪
1.3 圖片批量壓縮:文件秒變小,傳輸更流暢!

知識點: Image.save(quality=…) (JPG有損壓縮),Image.resize() (尺寸縮小),以及結合迭代的智能控制文件大小策略。
作用: 解決圖片太大怎么辦、網站圖片優化、傳輸慢等痛點,實現圖片瘦身,讓圖片文件變小,傳輸更流暢。

按質量壓縮: 針對JPG,通過調整quality參數(如80-90)在幾乎不損失畫質的情況下減小體積。
按尺寸縮小: 直接縮小圖片分辨率(如從4K到1080P),文件體積大幅下降。
智能控制文件大小: 通過循環嘗試不同質量參數,讓圖片達到目標KB大小。

python 圖片壓縮
1.4 圖片批量添加水印:讓你的圖片自帶版權或Logo!
知識點: ImageDraw繪制文字,Image.alpha_composite()疊加圖片,透明度、字體、顏色、位置控制。
作用: 圖片版權保護、品牌宣傳、統一品牌形象,告別手動P圖加水印。

文字水印: 自定義文字內容、字體、大小、顏色和透明度,并指定位置(如右下角)。

圖片水印: 將Logo、二維碼等圖片作為水印,調整大小、透明度,粘貼到主圖上。
python 添加水印

1.5 格式轉換與尺寸調整:Python圖片處理的效率升級!
知識點: Image.save(format=…),Image.convert(),Image.resize()。
作用: 適應不同平臺需求,進一步圖片瘦身,解決圖片加載慢問題。
PNG轉JPG: 在不需要透明背景時,將PNG轉換為更小體積的JPG。
JPG轉WebP/PNG: 根據需要轉換為現代格式(WebP)或帶透明度的PNG。
批量調整尺寸: 統一圖片分辨率,適配網頁、社交媒體顯示。
可視化:
python 圖片轉換

  1. 深度案例:多功能整合,打造你的“視覺內容工廠”!
    現在,你已經掌握了Python批量圖片處理的各項核心魔法。是時候將這些獨立的“神器”整合起來,構建一個真正強大的視覺內容工廠了!這個工廠將能夠同時執行多種圖片處理任務,實現圖片處理自動化的流水線操作。

功能: 提供一個統一的Python腳本,通過一個中心化的config.yaml配置文件,就能一站式同時控制圖片的批量壓縮(質量/尺寸)、批量格式轉換、智能控制大小、批量裁剪、批量添加水印等多種“瘦身”和“美化”操作。

場景案例:電商產品圖一鍵優化與多平臺適配

假設你是一名電商運營,需要將幾百張相機原圖(高分辨率、未處理)批量優化,用于網站和社交媒體。你面臨以下要求:

原始圖片: 尺寸大(如4000x3000像素),文件大(5MB+)。

網站主圖要求: 尺寸不超過1280x720,文件大小不超過300KB,格式為WebP,且帶有水印Logo。
社交媒體宣傳圖要求: 尺寸統一為800x800(正方形),并添加公司版權文字。
內部素材庫: 原始圖片進行日期水印后歸檔,保持高畫質。

我們將編寫一個主調度腳本,讀取一個包含所有處理規則的config.yaml。當圖片進入“工廠”,它將不再是單一處理,而是通過配置化的“處理管道”,依次經過你設定的多重處理步驟。

配置文件上一篇文章的config_visual_factory.yaml
下面是主程序

from PIL import Image, ImageDraw, ImageFont
import os
import yaml
import shutil
import re # 用于正則表達式(如果rename_rules中用到)
import magic # 用于文件類型魔術識別(如果classify_rules中用到)

核心:將前面所有圖片處理文章中的【單張圖片處理函數】復制到這里,并統一封裝

def _apply_single_processing_rule(img_obj, rule, img_path_for_logging=""):"""根據單個處理規則(來自config.yaml)對PIL圖片對象進行處理。返回處理后的圖片對象。(此函數將整合之前文章中各功能的單圖處理邏輯)"""rule_type = rule.get("type")if not rule.get("enabled", True): return img_objprint(f"      - 應用規則:{rule.get('name', rule_type)}")try:# --- 圖像尺寸調整 (resize) ---if rule_type == "resize":max_w, max_h = rule.get("max_size", img_obj.size)if img_obj.width > max_w or img_obj.height > max_h:# 調用你之前寫好的 resize 邏輯img_obj = img_obj.resize((int(img_obj.width * min(max_w/img_obj.width, max_h/img_obj.height)), int(img_obj.height * min(max_w/img_obj.width, max_h/img_obj.height))), Image.LANCZOS)return img_obj# --- 圖像質量壓縮 (compress_quality) ---elif rule_type == "compress_quality":quality = rule.get("quality", 85)img_obj._quality_param_ = quality # 標記質量參數,在最終保存時使用return img_obj# --- 圖像格式轉換 (convert_format) ---elif rule_type == "convert_format":target_format = rule.get("target_format", "jpg").lower()if img_obj.mode == 'RGBA' and target_format == 'jpg':img_obj = img_obj.convert('RGB')img_obj._target_format_ = target_format # 標記目標格式if "convert_quality" in rule: img_obj._convert_quality_ = rule.get("convert_quality")return img_obj# --- 圖像裁剪 (crop_ratio_center) ---elif rule_type == "crop_ratio_center":# 調用你之前寫好的中心裁剪邏輯target_w_ratio, target_h_ratio = rule.get("target_ratio", (1, 1))original_width, original_height = img_obj.sizeif original_width / original_height > target_w_ratio / target_h_ratio:new_width = int(original_height * (target_w_ratio / target_h_ratio))left = (original_width - new_width) / 2top = 0else:new_height = int(original_width * (target_h_ratio / target_w_ratio))left = 0top = (original_height - new_height) / 2right = left + new_widthbottom = top + new_heightreturn img_obj.crop((left, top, right, bottom))# --- 添加文字水印 (add_text_watermark) ---elif rule_type == "add_text_watermark":draw = ImageDraw.Draw(img_obj)font = ImageFont.truetype(rule.get("font_path", "arial.ttf"), rule.get("font_size", 30))text_color = tuple(rule.get("text_color", [0, 0, 0, 128]))text_content = rule.get("text", "")# 簡化位置計算,實際應有更多選項x, y = img_obj.width - draw.textbbox((0,0), text_content, font=font)[2] - 10, img_obj.height - draw.textbbox((0,0), text_content, font=font)[3] - 10draw.text((x, y), text_content, font=font, fill=text_color)return img_obj# --- 添加圖片水印 (add_image_watermark) ---elif rule_type == "add_image_watermark":watermark_img_path = os.path.expanduser(rule.get("watermark_image_path"))watermark_obj = Image.open(watermark_img_path).convert('RGBA')opacity = rule.get("opacity", 0.5)size_ratio = rule.get("size_ratio", 0.1)resized_w_img = watermark_obj.resize((int(img_obj.width * size_ratio), int(img_obj.height * size_ratio)), Image.LANCZOS)alpha = resized_w_img.split()[-1]alpha = Image.eval(alpha, lambda x: x * opacity)resized_w_img.putalpha(alpha)x, y = img_obj.width - resized_w_img.width - 10, img_obj.height - resized_w_img.height - 10 # 簡化位置img_obj.alpha_composite(resized_w_img, (x, y))watermark_obj.close()return img_obj# --- 新增功能演示:文件名添加日期前綴 (結合文件管理功能) ---elif rule_type == "add_date_prefix_to_filename":dt_obj = datetime.datetime.fromtimestamp(os.path.getmtime(img_path_for_logging))date_prefix = dt_obj.strftime(rule.get("format", "%Y%m%d_"))img_obj._new_filename_prefix_ = date_prefix # 標記新文件名,在保存時使用return img_objexcept Exception as e:print(f"? 應用規則 '{rule_type}' 失敗:{e}。文件 '{os.path.basename(img_path_for_logging)}'")return img_obj # 失敗也返回原圖,繼續處理其他規則return img_obj

主程序邏輯:你的“視覺內容工廠”核心

def run_visual_content_factory(config_path):"""運行視覺內容工廠,根據配置文件批量處理圖片。這是Python圖片處理自動化的終極實踐。:param config_path: 配置文件的路徑"""try:with open(config_path, 'r', encoding='utf-8') as f:config = yaml.safe_load(f)except FileNotFoundError:print(f"? 配置文件未找到:{config_path}")returnexcept yaml.YAMLError as e:print(f"? 配置文件解析錯誤:{e}")returnsource_dir = os.path.expanduser(config.get("source_directory"))output_base_dir = os.path.expanduser(config.get("output_directory"))if not os.path.exists(source_dir):print(f"? 源文件夾不存在:{source_dir}")returnprint(f"\n🚀 正在啟動你的視覺內容工廠,源目錄:'{source_dir}'")pipelines = config.get("pipelines", [])if not pipelines:print("?? 未配置任何處理流水線(pipelines),無任務執行。")returnfor pipeline in pipelines:pipeline_name = pipeline.get("name", "Unnamed_Pipeline")output_subdir = pipeline.get("output_subdir", pipeline_name)current_output_dir = os.path.join(output_base_dir, output_subdir)os.makedirs(current_output_dir, exist_ok=True)print(f"\n--- 啟動流水線:'{pipeline_name}' ---")print(f"📦 處理結果將保存到:'{current_output_dir}'")files_to_process = [f for f in os.listdir(source_dir) if os.path.isfile(os.path.join(source_dir, f))]if not files_to_process:print("?? 源文件夾中沒有找到圖片文件可供處理。")continue # 處理下一個流水線for filename in files_to_process:source_path = os.path.join(source_dir, filename)original_name_without_ext = os.path.splitext(filename)[0]original_ext = os.path.splitext(filename)[1].lower()img = Nonetry:img = Image.open(source_path).convert("RGBA") # 確保是RGBA模式,支持后續透明度操作print(f"   處理文件:'{filename}'")processed_img = img.copy() # 創建副本進行處理,避免修改原img對象# 遍歷并應用當前流水線的所有規則for rule in pipeline.get("rules", []):processed_img = _apply_single_processing_rule(processed_img, rule, source_path) # 最終保存圖片final_name_prefix = getattr(processed_img, '_new_filename_prefix_', '') # 獲取文件名新前綴final_format_from_rule = getattr(processed_img, '_target_format_', None) # 獲取目標格式save_quality_param = getattr(processed_img, '_quality_param_', 90) # 獲取質量參數if final_format_from_rule:final_ext = f".{final_format_from_rule}"else:final_ext = original_ext # 否則保持原擴展名output_filename = final_name_prefix + original_name_without_ext + final_extoutput_full_path = os.path.join(current_output_dir, output_filename)# 處理重名counter = 1while os.path.exists(output_full_path):output_filename_base, out_ext = os.path.splitext(output_filename)output_full_path = os.path.join(current_output_dir, f"{output_filename_base}({counter}){out_ext}")counter += 1# 保存圖片if final_format_from_rule in ["jpg", "jpeg"] or (not final_format_from_rule and original_ext in [".jpg", ".jpeg"]):processed_img.save(output_full_path, quality=save_quality_param, optimize=True)elif final_format_from_rule == "webp":processed_img.save(output_full_path, quality=save_quality_param, lossless=False)else: # 默認PNG或其他,可以根據需要調整保存參數processed_img.save(output_full_path)new_size_mb = os.path.getsize(output_full_path) / (1024 * 1024)print(f"   ? 導出:'{filename}' -> '{os.path.basename(output_full_path)}' (處理后: {new_size_mb:.2f}MB)")except Exception as e:print(f"? 處理文件 '{filename}' 失敗:{e}")finally:if img: img.close() # 確保關閉原始圖片文件if processed_img and processed_img != img: processed_img.close() # 關閉處理后的圖片對象副本print("\n? 你的視覺內容工廠已完成所有任務!")if __name__ == "__main__":# 確保 config_visual_factory.yaml 在同一目錄下config_file_path = os.path.join(os.path.dirname(__file__), "config_visual_factory.yaml") run_visual_content_factory(config_file_path)

創建文件: 創建一個源文件夾(如電商產品原圖),放入各種你希望處理的圖片文件。

準備Logo(如果使用圖片水印): 準備一個Logo圖片(最好是透明背景的PNG格式),命名為your_brand_logo.png,放在與visual_content_factory_main.py和config_visual_factory.yaml同一目錄下。

保存代碼: 將上面的 visual_content_factory_main.py 和 config_visual_factory.yaml 兩個文件保存到
同一個目錄下。
核心: 由于篇幅限制,_apply_single_processing_rule 函數內部的具體實現邏輯需要你將之前各篇(裁剪、壓縮、水印、格式轉換/尺寸調整)中對應的單張圖片處理代碼整合進來。

修改配置: 打開 config_visual_factory.yaml,根據你實際的文件夾路徑修改 source_directory 和 output_directory。啟用/禁用你需要的處理規則,并調整其參數。你可以針對不同的pipelines配置不同的規則集。

運行: 在終端中進入 visual_content_factory_main.py 所在的目錄,運行 python visual_content_factory_main.py。
綜合圖片處理例子
5. 總結與展望:告別手動P圖,你的視覺內容從此“輕裝上陣”!
恭喜你!通過本篇文章,你已經掌握了Python圖片處理自動化的終極奧秘,親手打造了一個強大的**“視覺內容工廠”**!我們系統地回顧并整合了:
視覺工廠

你對這個“視覺內容工廠”還有哪些更酷炫的構想?你希望它還能集成哪些圖片處理功能?比如智能美顏、背景替換、或者根據內容自動打標簽?在評論區分享你的奇思妙想和應用場景,我將積極與你互動,或許你的想法就是我們未來更新的動力!

敬請期待! 圖片處理自動化僅僅是Python辦公自動化的冰山一角。在未來的系列文章中,我們將深入探索Python在Excel、Word、郵件、網頁自動化等更多職場場景的自動化應用,解鎖更多效率密碼!
同時,本系列所有代碼(包括本篇的“視覺內容工廠”完整版)都將持續更新并匯總在我的GitHub倉庫中,敬請關注!未來,這個**“Python職場效率專家實戰包”還將包含更多開箱即用、功能強大**的自動化工具,助你一路開掛!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/914068.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914068.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914068.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

frame 與新窗口切換操作【selenium 】

🧭 一、切換到 iframe 內部進行操作在瀏覽器自動化測試中,iframe 是一個特別的存在。它相當于在當前頁面中嵌入了另一個獨立的 HTML 頁面。當我們試圖直接訪問 iframe 中的元素時,往往會發現定位不到,比如:elements w…

MYSQL C_API使用全解

文章目錄C_API(簡單的)安裝這個庫使用流程初始化連接mysql_init建立連接mysql_real_connect執行SQL語句mysql_query處理結果mysql_store_resultmsyql_use_resultmysql_num_rowsmsyql_free_resultmysql_num_fieldsmysql_fetch_row多線程安全關閉連接mysql…

閑庭信步使用圖像驗證平臺加速FPGA的開發:第二課——RGB轉YCbCr的FPGA硬件編程詳解

(本系列只需要modelsim即可完成數字圖像的處理,每個工程都搭建了全自動化的仿真環境,只需要雙擊文件就可以完成整個的仿真,大大降低了初學者的門檻!!!!如需要該系列的工程文件請關注…

RK3566/RK3568 Android11 修改selinux模式

概述RK3566/RK3568 Android11 SDK默認的selinux是Enforcing模式(強制模式)。Enforcing:強制模式:SELinux在運行中,且已經開始限制domain/type之間的驗證關系 Permisssive:寬容模式:SELinux在運行中,如果驗證…

iOS Widget 開發-3:Widget 的種類與尺寸(主屏、鎖屏、靈動島)

iOS 支持多種類型的 Widget,分布在主屏幕、鎖屏、靈動島、待機模式、控制中心等多個系統位置。每種 Widget 都有各自的尺寸、交互能力與限制。 本篇將系統梳理 iOS 當前支持的 Widget 類型與尺寸規格。主屏 Widget(Home Screen Widgets) 主屏…

ffmpeg 中 write_option()函數詳細注釋

author: hjjdebug date: 2025年 07月 11日 星期五 10:51:23 CST descrip: ffmpeg 中 write_option()函數詳細注釋 文章目錄1. 函數原型1.1 參數說明1.2 SpecifierOpt 說明符選項結構2. write_option 代碼注釋2.1 誰調用了write_option 函數?3. 小結:write_option()不僅在ffmpe…

PandaCoder重大產品更新-引入Jenkinsfile文件支持

寫在前面 安裝這個插件可以直接平替 Jenkinsfile Pro ,節省200元關于插件介紹的處女篇:https://mp.weixin.qq.com/s/fwMEhmx8vxVlvfnipx09Ag為什么叫「熊貓編碼助手」? 熊貓是中國的國寶,備受世界喜愛,代表著中國特色和…

鏈表算法之【判斷鏈表中是否有環】

目錄 LeetCode-141題 LeetCode-141題 給定一個鏈表的頭節點,判斷鏈表中是否存在環 class Solution {public boolean hasCycle(ListNode head) {// checkif (head null || head.next null)return false;// 定義兩個指針,一個快指針[fast]&#xff0c…

Ubuntu 22.04安裝SQL Server指南

看起來在安裝過程中出現了問題,導致 mssql-server 沒有正確安裝。以下是排查和修復步驟:1. 檢查是否成功安裝了 mssql-server 運行以下命令,確認是否已安裝: dpkg -l | grep mssql-server如果沒有任何輸出,說明 mssql-…

Vue+ElementUI聊天室開發指南

Hi,我是布蘭妮甜 !在現代Web應用中,實時聊天功能已成為許多社交平臺、協作工具和客戶支持系統的核心需求。本文將詳細介紹如何使用Vue.js框架配合ElementUI組件庫實現一個功能完整的聊天室應用。我們將從項目搭建開始,逐步實現用戶…

提升你的AI交互技能:使用Anthropic互動提示教程

探索Anthropic的互動式提示工程教程:讓Claude與你更默契 在當今人工智能世界中,熟練掌握有效的提示工程成為了與AI進行高效溝通的關鍵。Anthropic推出了一款全面且互動性強的教程,名為“Prompt Engineering Interactive Tutorial”&#xff0…

從 JavaFX WebView 遷移至 JxBrowser

長久以來,JavaFX 一直包含一個內置的 WebView 組件,這是在 Java 應用中渲染 Web 內容的一個穩定方案。然而,在更復雜或要求更高的使用場景中,它可能就不夠用了。因此,許多開發者轉向了像 JxBrowser 這樣的替代方案。 …

將 Go 應用從 x86 平臺遷移至 Amazon Graviton:場景剖析與最佳實踐

簡介 近年來,Amazon Graviton 處理器以其優越的性價比和強勁的性能,成為了構建高效、可擴展云原生應用的重要選擇。Graviton 采用基于 Arm64 架構的芯片,與傳統的 x86 架構相比存在不少架構差異。雖然 Go 天生對 Arm64 具有良好支持&#xf…

arcgis api for js 設置地圖服務請求帶有請求頭信息

通過地圖的config模塊的請求攔截器來設置請求頭信息,如下示例: 1、引入:‘esri/config’ 1、設置請求頭信息 import { loadArcgisModules } from /utils/map/mapLoadUtil export default { mounted() {this.loadMap()}, methods: {/** ****…

工業通信升級新選擇:耐達訊CCLINKIE轉Modbus TCP網關

在工業自動化系統中,協議轉換網關的選擇直接影響系統穩定性與通信效率。對于CCLINKIE轉Modbus TCP場景,耐達訊通信技術網關憑借以下特性,成為多個項目中的優選方案。技術選型要點協議兼容性支持CCLINKIE的令牌環機制與Modbus TCP的TCP/IP協議…

使用python的 FastApi框架開發圖書管理系統-前后端分離項目分享

今天給大家分享一個 我最近使用python 框架 fastapi 寫的一個web項目 ,叫圖書管理系統。項目主要是來鞏固 python的編程技術。使用的是前端后 分離開發。 主要實現的功能: 1、用戶管理:可以新增、編輯、刪除用戶信息。 2、圖書管理&#xff1…

上位機知識篇---Docker

Docker 詳細介紹 一、Docker 是什么 Docker 是一個開源的容器化平臺,它允許開發者將應用程序及其依賴項打包到一個標準化的單元(稱為容器)中,確保應用在任何環境中都能以相同的方式運行。 簡單來說,Docker 解決了 &…

藍橋杯第十六屆(2025)真題深度解析:思路復盤與代碼實戰

> 省一選手的血淚經驗:**避免這些坑,你也能沖進國賽!** 2025年藍橋杯省賽已落下帷幕,作為近年來**難度最高的一屆競賽**,不少選手在考場上遭遇了“滑鐵盧”。本文將以C++ B組真題為例,逐題解析解題思路,并提供**優化后的AC代碼與詳細注釋**。筆者最終排名省一前40%,…

使用gdal讀取shp及filegdb文件

一、使用qgis開源工具構建兩個文件,分別是filegdb和shp,每個文件包含一個圖層,圖層內容只包含一個字段:id,有兩個數據行,圖層幾何為多邊形,圖層都是如下的效果。二、使用rust讀取上述文件 rust依…

從0開始學習R語言--Day44--LR檢驗

之前我們提到用LM檢驗的方式,來判斷數據在空間上是否受到鄰近數據及其殘差的影響,但是LM檢驗是采用直接計算的方式,只關注了數據的殘差平方和,沒有數據關于依賴項的考慮,容易被結果誤導。而LR檢驗雖然在結果上有時候跟…