【AI绘画】Midjourney进阶:三分线构图详解

news2024/12/24 2:45:39

在这里插入图片描述

博客主页: [小ᶻZ࿆]
本文专栏: AI绘画 | Midjourney

文章目录

  • 💯前言
  • 💯什么是构图
    • 为什么Midjourney要使用构图
  • 💯三分线构图
    • 特点
    • 使用场景
    • 提示词书写技巧
    • 测试
  • 💯小结


在这里插入图片描述


💯前言

【AI绘画】Midjourney进阶:对称构图详解     https://blog.csdn.net/2201_75539691?type=blog

  • 在上一篇文章中,我们深入探讨了构图的定义以及学习构图的重要性。我们详细介绍了对称构图的概念、特点及其在Midjourney中的应用方式,帮助大家理解如何通过对称性提升画面的平衡感和视觉冲击力。接下来,本文将继续为大家介绍另一种常用且经典的构图技巧——三分线构图(又称黄金分割构图)。通过对这一构图法则的分析与应用示例,希望能够帮助大家在AI绘画创作中更加精准地掌握构图技巧,提升作品的美感与表现力。
    Midjourney官方使用手册
    在这里插入图片描述

💯什么是构图

构图是摄影、绘画、设计等视觉艺术中的一个基本概念。它指的是艺术家如何在二维平面上安排元素,包括形状、线条、色彩、质地、空间等,以达到一定的视觉效果和艺术表达。
在这里插入图片描述


为什么Midjourney要使用构图

  • 简单来说,Midjourney有构图词画面质量更高
  • 构图的目标是引导观众的视线,突出主题,增加视觉吸引I力,以及传达艺术家的观点或情感。
    在这里插入图片描述
  • 在Midjourney中使用构图是非常重要的,有两个方向可以解释其必要性:非共性和共性。

    • 从非共性的角度来看,在Midjourney中使用构图相关的提示词可以显著提升生成画面的质量。这是因为Midjourney的模型在训练时,不仅使用了图像,还结合了与这些图像相关的提示词。通常来说,这些图像来源于专业摄影或高质量渠道,具有较高的视觉标准。当模型学习了这些图片与提示词之间的关联后,用户在生成图像时如果使用了构图相关的提示词,系统会优先选择类似图库中的优质素材,从而生成更为精致的画面。因此,通过使用构图提示词,可以明显地提高生成图像的质量。
      在这里插入图片描述

    • 从共性的角度来说,构图本身就是一种极为有效的手段,可以用于引导观众的视线、突出画面的主题、增强视觉吸引力,并传递创作者的情感和观点。构图所带来的这些视觉上的提升效果,是不受具体工具限制的,无论是在摄影、绘画还是AI生成图像中都是通用的。因此,当在Midjourney中使用构图提示词时,画面的质量提升几乎是必然的结果。这些道理或许听起来有些抽象,但在实际操作和练习时,大家会切实地感受到构图带来的效果提升。
      在这里插入图片描述

💯三分线构图

三分线构图,又被称为黄金分割构图,是构图中最常用的一种构图法则。这种构图法则的基本原理是将画面分割为九等份,由两条垂直线和两条水平线相交形成,主体或重要元素放在这四条线或者交点上。

  • 三分线构图,也被称为黄金分割构图,是一种非常常用的构图法则。如果你对摄影有一定了解,可能会熟悉这个构图技巧。而对于刚开始接触摄影的人来说,使用三分线构图可以显著提升照片的视觉效果。其基本原理是将画面分为九等份,由两条垂直线和两条水平线交叉形成网格。画面的主体或重要元素通常放置在这四条线的交点上,或者沿着这些线来进行布局。
    在这里插入图片描述

特点

平衡感:三分线构图可以使画面的视觉重心分布均匀,使画面看上去更加稳定和平衡。
画面美感:三分线构图符合人类的视觉习惯和审美规律,能够使画面看上去更加和谐和美观。

  • 三分线构图的第一个特点是平衡感。虽然不像对称构图那样完全均衡,但它通过将画面分成三分之一和三分之二的比例,使得视觉重心得到均匀分布,从而让画面整体看上去更加稳定且具有平衡感。
    在这里插入图片描述
  • 第二个特点是画面美感。三分线构图符合人类的视觉习惯和审美规律,能够让画面显得更加和谐、美观。即使没有设计背景的人,也会因为这种构图形式的自然规律,感受到画面的美感和愉悦感。
    在这里插入图片描述

使用场景

在风景图片中,通过使用三分线构图,可以有效地表现出天空和地面的比例关系。
在人像图片中,通过使用三分线构图,可以使人物的位置和背景的比例更加协调。
在建筑图片和静物图中,通过使用三分线构图,可以使建筑或静物的位置和周围环境的关系更加和谐。

  1. 三分线构图在多种场景中都有着广泛的应用。在风景摄影中,三分线构图能够很好地展现天空与地面之间的比例关系,营造出更加和谐的视觉效果。
    在这里插入图片描述

  2. 在人像摄影中,通过三分线构图,人物的位置与背景的比例能够更加协调,使得整体画面更加平衡且富有美感。
    在这里插入图片描述

  3. 除此之外,在建筑摄影或静物摄影中,三分线构图也非常实用。它能够巧妙地将建筑或静物与周围环境的关系表现得更加和谐。
    在这里插入图片描述

  • 无论是在光影对比上,还是元素布局上,这种构图都能使画面呈现出更加平衡的视觉效果。例如,当一侧的元素较重时,通过在另一侧放置主体人物,可以瞬间让画面变得更为平衡。
    在这里插入图片描述

提示词书写技巧

  • 在书写与三分线构图相关的提示词时,使用Rule of Thirds composition可以帮助Midjourney生成更加符合黄金分割比例的图像。这个提示词会让图像中的主体或关键元素自动排列在画面的三分线交点上,从而实现更加和谐的视觉效果。无论是风景、人像还是建筑等场景,通过这个提示词可以让画面更具美感,符合人类自然的视觉习惯。因此,建议在创作中结合其他细节描述,例如“cinematic light”或“8k”,来进一步提升画面的整体质量和表现力。
    在这里插入图片描述

测试

原图:

serene forest, river flowing through mountains, vibrant autumn colors, sun setting, reflections on water, ultra detailed, cinematic light, 8k --ar 16:9
  • 在原图中,画面中的各个元素,比如河流、山脉和树木的布局显得相对自由、分散。虽然画面整体色彩和光影表现良好,但视觉重点不够明确,观众的视线可能会在画面中自由游走,缺少一个明显的视觉引导。
    在这里插入图片描述

原图+Rule of Thirds composition:

serene forest, river flowing through mountains, vibrant autumn colors, sun setting, reflections on water, Rule of Thirds composition, ultra detailed, cinematic light, 8k --ar 16:9
  • 当加入三分线构图后,画面中主要的视觉元素被精确地放置在三分线的交点或线上。例如,河流的流向和树木的排列都显得更加有序,视觉重心更加清晰。观众的视线自然而然地被引导到画面中的重点区域,从而增加了画面的平衡感与和谐美。
    在这里插入图片描述

💯小结

  • 在这里插入图片描述
    在本文中,我们详细介绍了三分线构图(也称为黄金分割构图)的原理、特点以及实际应用。通过将画面分为九等份,并将主体或重要元素放置在这些分割线或交点上,可以大幅提升图像的平衡感和美感。三分线构图广泛应用于风景、人像和建筑等场景中,能够自然引导观众的视线,增强画面的视觉效果。同时,在使用AI绘画工具如Midjourney时,结合“Rule of Thirds composition”这样的提示词,可以自动优化图像的构图效果,使作品更加符合人类的审美习惯。通过本文的解析和示例,读者可以更深入地理解这一构图技巧,进而在创作中灵活应用,提升作品的表现力。
  • 展望AI绘画的未来,随着技术的不断进步,AI绘画不仅在技术层面上将愈发成熟,还将在艺术创作中扮演更重要的角色。三分线构图等经典构图技巧的引入,让AI工具如Midjourney不仅能够生成视觉效果出色的作品,还能够遵循艺术创作中的美学法则,帮助创作者精准表达情感和思想。

import torch, torchvision.transforms as transforms; from torchvision.models import vgg19; import torch.nn.functional as F; from PIL import Image; import matplotlib.pyplot as plt; class StyleTransferModel(torch.nn.Module): def __init__(self): super(StyleTransferModel, self).__init__(); self.vgg = vgg19(pretrained=True).features; for param in self.vgg.parameters(): param.requires_grad_(False); def forward(self, x): layers = {'0': 'conv1_1', '5': 'conv2_1', '10': 'conv3_1', '19': 'conv4_1', '21': 'conv4_2', '28': 'conv5_1'}; features = {}; for name, layer in self.vgg._modules.items(): x = layer(x); if name in layers: features[layers[name]] = x; return features; def load_image(img_path, max_size=400, shape=None): image = Image.open(img_path).convert('RGB'); if max(image.size) > max_size: size = max_size; else: size = max(image.size); if shape is not None: size = shape; in_transform = transforms.Compose([transforms.Resize((size, size)), transforms.ToTensor(), transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))]); image = in_transform(image)[:3, :, :].unsqueeze(0); return image; def im_convert(tensor): image = tensor.to('cpu').clone().detach(); image = image.numpy().squeeze(); image = image.transpose(1, 2, 0); image = image * (0.229, 0.224, 0.225) + (0.485, 0.456, 0.406); image = image.clip(0, 1); return image; def gram_matrix(tensor): _, d, h, w = tensor.size(); tensor = tensor.view(d, h * w); gram = torch.mm(tensor, tensor.t()); return gram; content = load_image('content.jpg').to('cuda'); style = load_image('style.jpg', shape=content.shape[-2:]).to('cuda'); model = StyleTransferModel().to('cuda'); style_features = model(style); content_features = model(content); style_grams = {layer: gram_matrix(style_features[layer]) for layer in style_features}; target = content.clone().requires_grad_(True).to('cuda'); style_weights = {'conv1_1': 1.0, 'conv2_1': 0.8, 'conv3_1': 0.5, 'conv4_1': 0.3, 'conv5_1': 0.1}; content_weight = 1e4; style_weight = 1e2; optimizer = torch.optim.Adam([target], lr=0.003); for i in range(1, 3001): target_features = model(target); content_loss = F.mse_loss(target_features['conv4_2'], content_features['conv4_2']); style_loss = 0; for layer in style_weights: target_feature = target_features[layer]; target_gram = gram_matrix(target_feature); style_gram = style_grams[layer]; layer_style_loss = style_weights[layer] * F.mse_loss(target_gram, style_gram); b, c, h, w = target_feature.shape; style_loss += layer_style_loss / (c * h * w); total_loss = content_weight * content_loss + style_weight * style_loss; optimizer.zero_grad(); total_loss.backward(); optimizer.step(); if i % 500 == 0: print('Iteration {}, Total loss: {}'.format(i, total_loss.item())); plt.imshow(im_convert(target)); plt.axis('off'); plt.show()

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cmake 报错及解决

1.背景:自己编写CMakeLists.txt并构建项目 2.问题:build目录下执行“cmake ..”命的时候如下报错: CMake Error at CMakeLists.txt:27 (ADD_EXECUTABLE): The target name "client," is reserved or not valid for certain CMak…

FlexMatch: Boosting Semi-Supervised Learning with Curriculum Pseudo Labeling

FlexMatch: Boosting Semi-Supervised Learning with Curriculum Pseudo Labeling 摘要:引言:背景3 flexMatch3.1 Curriculum Pseudo Labeling3.2 阈值预热3.3非线性映射函数实验4.1 主要结果4.2 ImageNet上的结果4.3收敛速度加速4.4 消融研究5 相关工作摘要: 最近提出的Fi…

MaxKB 三大内置标签用法

一、<quick_question> <quick_question></quick_question> 作用&#xff1a;快速展示问题标签&#xff0c;只需将问题放入标签中&#xff0c;系统便会自动在对话结束时展示该问题。 1.1 展示效果 1.2 快捷使用 在流程编排当中&#xff0c;添加一个AI对话…

线性代数 矩阵

一、矩阵基础 1、定义 一组数按照矩形排列而成的数表&#xff1b;形似行列式&#xff0c;区别点是 矩阵行列式符号()或[]| |形状方阵或非方阵方阵本质数表数属性A|A|是A诸多属性中的一种维度m *n (m 与n可以相等也可以不相等)n*n 同型矩阵 若A、B两个矩阵都是mn 矩阵&#x…

【Elasticsearch系列】Elasticsearch启动失败问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【JavaEE初阶】文件-IO之实现文件系统的操作如何进行实现

前言 &#x1f31f;&#x1f31f;本期讲解关于文件IO的操作&#xff0c;这里涉及到比较常用的文件操作哦~~~ &#x1f308;上期博客在这里&#xff1a;【JavaEE初阶】CAS的ABA问题&#xff0c;JUC多线程编程有用的相关类-CSDN博客 &#x1f308;感兴趣的小伙伴看一看小编主页&a…

什么是Qseven?模块电脑(核心板)规范标准简介二

1.概念 Qseven是一种通用的、小尺寸计算机模块标准&#xff0c;适用于需要低功耗、低成本和高性能的应用。 Qseven模块电脑&#xff08;核心板&#xff09;采用230Pin金手指连接器 2.Qseven的起源 Qseven最初是由Congatec、SECO、MSC三家欧洲公司于2008年发起&#xff0c;旨在…

【fisco学习记录2】多群组搭建

说明 文档参考&#xff1a; 多群组部署 — FISCO BCOS 2.0 v2.11.0 文档 (fisco-bcos-documentation.readthedocs.io) 多群组搭建之前&#xff0c;先暂停之前的单群组&#xff0c;并删除&#xff1a; cd fisco bash nodes/127.0.0.1/stop_all.sh rm -rf nodes/ 实现图&…

如何从数码相机中恢复已删除的照片

照片恢复是恢复已删除照片的最佳工具&#xff0c;带有恢复 RAW 照片的选项。在本文中&#xff0c;我们将解释如何检索已删除的照片。 不仅适用于专业摄影师&#xff0c;而且对于像我们这样喜欢捕捉回忆的人来说&#xff0c;Moments 相机是一种重要的数字设备。可悲的是&#x…

Gin项目的初始化步骤和常见错误记录

相信很多人对Go的环境安装和Gin项目的初始化都已经手拿把攥很是熟练了&#xff0c;本节介绍一个自己新建Go项目时非常好用的设置以及记录一下Gin项目的初始化过程和常能遇到的错误。 一个容易忽略的Go ENV 在安装了Go的电脑中&#xff0c;我们可以在命令行执行 go env 命令&…

泛谈阿里vs美团订单存储架构演进

泛谈阿里vs美团订单存储架构演进 1. 订单存储介绍 订单的存储背后支撑创单后的系列用户活动&#xff0c;围绕着业务的发展&#xff0c;大厂的订单的数据日益剧增 在手淘订单列表&#xff0c;我们可以看见天猫、飞猪、淘票票等诸多 BU 的订单 在美团的订单列表&#xff0c;我…

[Python学习日记-46] Python 中第三方开源模块的安装、使用与上传自己写的模块

[Python学习日记-46] Python 中第三方开源模块的安装、使用与上传自己写的模块 简介 下载与安装 如何使用安装好的第三方开源模块 如何上传自己写的模块到 PyPi 简介 在前面的模块介绍和导入当中主要介绍的都是 Python 内置的一些模块&#xff0c;我们把它称为标准库&#…

string模拟优化和vector使用

1.简单介绍编码 utf_8变长编码&#xff0c;常用英文字母使用1个字节&#xff0c;对于其它语言可能2到14&#xff0c;大部分编码是utf_8&#xff0c;char_16是编码为utf_16, char_32是编码为utf_32&#xff0c; wchar_t是宽字符的&#xff0c; utf_16是大小为俩个字节&a…

在线书画展:艺术与科技携手,拓宽艺术之路

在数字化浪潮的推动下&#xff0c;在线书画展正成为艺术与科技完美融合的典范。它不仅拓宽了艺术的传播渠道&#xff0c;提升了个人书画家的开展效率&#xff0c;还促进了艺术家们的职业发展。以下是对在线书画展几大优势的深入探讨。 一、拓宽艺术传播渠道 全球化展示&#x…

前端开发笔记--html 黑马程序员2

文章目录 前端常用标签一、标题标签二、段落标签和换行标签和水平线标签三、文本格式化标签![请添加图片描述](https://i-blog.csdnimg.cn/direct/87583fa23fe04229b016912051f3fc45.png)四、盒子标签五、图像标签六、连接标签七、注释和特殊字符 八、表格标签的基本使用九、列…

图书馆自习室座位预约管理微信小程序+ssm(lw+演示+源码+运行)

摘 要 随着电子商务快速发展世界各地区,各个高校对图书馆也起来越重视.图书馆代表着一间学校或者地区的文化标志&#xff0c;因为图书馆丰富的图书资源能够带给我们重要的信息资源&#xff0c;图书馆管理系统是学校管理机制重要的一环&#xff0c;,面对这一世界性的新动向和新…

Python | Leetcode Python题解之第475题供暖器

题目&#xff1a; 题解&#xff1a; class Solution:def findRadius(self, houses: List[int], heaters: List[int]) -> int:ans 0houses.sort()heaters.sort()j 0for i, house in enumerate(houses):curDistance abs(house - heaters[j])while j 1 < len(heaters) …

计算机网络——运输层(可靠传输、超时重传、选择确认、流量控制和拥塞控制、TCP连接和释放)

TCP可靠传输的实现 我们假定数据传输只在一个方向进行&#xff0c;即A发送数据&#xff0c;B给出确认。这样的好处是使讨论限于两个窗口&#xff0c;即发送方A的发送窗口和接收方B的接收窗口。 以字节为单位滑动窗口 发送方构造窗口 窗口前沿和后沿的移动情况 描述发送窗口的状…

《使用Gin框架构建分布式应用》阅读笔记:p1-p19

《使用Gin框架构建分布式应用》学习第1天&#xff0c;p1-p19总结&#xff0c;总计19页。 一、技术总结 1.go get & go install 执行go get 或者 go install 命令后package会被安装到哪里&#xff1f;参考&#xff1a;https://go.dev/ref/mod#go-install VSCode结合WSL使…

springboot001基于SpringBoot的在线拍卖系统(论文+源码)_kaic

医护人员排班系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了医护人员排班系统的开发全过程。通过分析医护人员排班系统管理的不足&#xff0c;创建了一个计算机管理医护人员排班系统的方案。文章介绍了医…